私はFactoryGirlを使用してモデルのメモリ内スタブを構築し、すべてのActiveRecordクエリをそれらのモデルに対してのみ実行したいと考えています。例:RSpecテストでデータベースの使用を完全に避けるにはどうすればよいですか?
# Assume we start with an empty database, a Foo model,
# and a Foo factory definition.
#foo_spec.rb
stubbed_foo = FactoryGirl.build_stubbed(:foo)
# Elsewhere, deep in the guts of application
Foo.first() # Ideally would return the stubbed_foo we created
# in the test. Currently this returns nil.
解決策は、メモリ内のデータベースを使用することです。しかし、上記のシナリオは可能ですか?
テーブルがない場合は、モデルのスキーマがないため、スタブされたモデルは実際のスキーマと一致することなく任意のオブジェクトのように動作する可能性があります。生産に存在します。これはおそらく悪い考えです。なぜこのようにActiveRecordをバイパスしようとしていますか? –
ファクトリーガールの代わりにフィクスチャを使うことができました – trueinViso
@trueinViso Fooクラスは 'first()'やその他のクエリメソッドを呼び出すときにデータベースに移動するので、フィクスチャが私の問題を解決するとは思いません。 –