0

FactoryGirlから始めたばかりです。という名前のモデルがありSubscriptionます。どうやらいくつかの計算を行うメソッド「set_price」があります。そのためには、別のモデルにいくつかの値を要求する必要があります。

def set_price
  base_price = Option.find_by_key(:base_price).value.to_f
  # […] some calculations
end

仕様を実行すると、次のようになります。

   NoMethodError:
            undefined method `value' for nil:NilClass

私は(まだ?) を作成していないので、これは非常に論理的ですOptions

FactoryGirlこれに適していますか?Optionこの場合、フィクスチャを作成する必要がありますか? それともただの嘲笑?

4

1 に答える 1

1

データベースにオプションがないため、これは失敗します。テストで set_price を呼び出す前にオプション ファクトリを作成するか (この場合、find_by_key(:base_price) がファクトリで作成されたオプションを返すことを確認する必要があります)、またはモックを使用することができます。

option = mock_model('Option', :value => 1)
Option.stub(:find_by_key).and_return(option)

モックには、データベースに影響を与えないという利点がありますが、脆弱になる可能性があります。

于 2012-06-23T05:02:56.457 に答える