我正在尝试使用 FactoryGirl 编写测试,并希望为基于输入参数生成的类创建一个工厂。所以在我的setup
街区我尝试了这样的事情:
setup do
FactoryGirl.define do
factory :my_table_1, :class => MyTable.create_subclass(1) do
my_table_traits
end
end
end
whereMyTable.create_subclass
返回MyTable
使用参数构建的子类(MyTable
正如您可能猜到的,是一个ActiveRecord
类)。
但这不起作用。我发现如果我添加了对 的调用FactoryGirl.find_definitions
,但这会导致重复的定义错误。我也尝试更改define
为modify
,但这似乎无法添加工厂,只能修改现有工厂。
测试运行时如何添加工厂?或者,更好的是,是否有另一种方法可以为在测试运行之前甚至不存在的动态创建的类设置这个工厂?
语境:
MyTable
是最终表数据将被加载到。在处理过程中,我创建临时表来加载数据,以便在将数据加载到实际表之前将其暂存。这些临时表由MyTable
基于参数动态生成的子类表示。MyTable
该测试的目的是验证我们在子类/临时表中完成暂存数据后是否正确插入数据。
由于我已经使用 FactoryGirl 为其他事物创建测试数据,因此想要使用它为该测试中的临时表创建测试数据是一种自然的扩展。