まず、この質問は以前の質問と少し似ていますが、新しいスレッドを開始するには十分に異なると感じました。モデルの検証をテストしようとすると、問題が発生します。フィールド :default_price を必要とするユーザー モデルがあります。私のテストは次のとおりです。
it "should require default packs" do
User.new(FactoryGirl.build(:user, :default_packs => " ")).should_not be_valid
end
ただし、テストを実行すると、次のエラーが発生します。
Failure/Error: should_not be_valid
TypeError:
nil can't be coerced into Fixnum
# ./app/models/user.rb:62:in `*'
# ./app/models/user.rb:62:in `daily_saving_potential_cents'
# ./spec/models/user_spec.rb:155:in `block (2 levels) in <top (required)>'
Daily_Saving_potential_cents は次のように定義されます。
def daily_saving_potential_cents
return default_price_cents * default_packs
end
default_price_cents
は単にモンテライズされたバージョンでありdefault_price
、default_packs は私のモデルの別のフィールドです。この問題は、default_price_cents が空白の場合、これら 2 つを掛け合わせることができないという事実から生じますが、テストでこれを修正するにはどうすればよいですか? 私の検証により、default_price_cents が空白になることはありませんが、それに対してテストしている場合は空白になります。