FactoryGirl を使用してテストを記述しようとしており、入力パラメーターに基づいて生成されるクラスのファクトリーを作成したいと考えています。だから私のsetup
ブロックで私はこのようなことを試しました:
setup do
FactoryGirl.define do
factory :my_table_1, :class => MyTable.create_subclass(1) do
my_table_traits
end
end
end
whereは引数を使用して builtMyTable.create_subclass
のサブクラスを返します(は、ご想像のとおり、クラスです)。MyTable
MyTable
ActiveRecord
しかし、これはうまくいきません。FactoryGirl.find_definitions
への呼び出しを追加すると、重複定義エラーが発生することがわかりました。私もに変更しようとしdefine
ましたmodify
が、それは既存の工場を変更するだけで、工場を追加することはできないようです。
テストの実行時にファクトリを追加するにはどうすればよいですか? または、さらに良いことに、テストが実行されるまで存在しない動的に作成されたクラス用にこのファクトリをセットアップする別の方法はありますか?
環境:
MyTable
データがロードされる最終テーブルです。処理中に、実際のテーブルにロードされる前にステージングするために、データをロードする一時テーブルを作成します。MyTable
これらの一時テーブルは、引数に基づいて動的に生成されるサブクラスによって表されます。このテストの目的はMyTable
、サブクラス/一時テーブルにデータをステージングした後、データを正しく挿入することを確認することです。
私はすでに FactoryGirl を使用して他のテスト データを作成しているので、このテストの一時テーブルのテスト データを作成するためにそれを使用したいというのは自然な流れです。