0

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のサブクラスを返します(は、ご想像のとおり、クラスです)。MyTableMyTableActiveRecord

しかし、これはうまくいきません。FactoryGirl.find_definitionsへの呼び出しを追加すると、重複定義エラーが発生することがわかりました。私もに変更しようとしdefineましたmodifyが、それは既存の工場を変更するだけで、工場を追加することはできないようです。

テストの実行時にファクトリを追加するにはどうすればよいですか? または、さらに良いことに、テストが実行されるまで存在しない動的に作成されたクラス用にこのファクトリをセットアップする別の方法はありますか?

環境:

MyTableデータがロードされる最終テーブルです。処理中に、実際のテーブルにロードされる前にステージングするために、データをロードする一時テーブルを作成します。MyTableこれらの一時テーブルは、引数に基づいて動的に生成されるサブクラスによって表されます。このテストの目的はMyTable、サブクラス/一時テーブルにデータをステージングした後、データを正しく挿入することを確認することです。

私はすでに FactoryGirl を使用して他のテスト データを作成しているので、このテストの一時テーブルのテスト データを作成するためにそれを使用したいというのは自然な流れです。

4

1 に答える 1