如何创建一个值递增的工厂列表
How to create a list of factories with one value incremented
我正在使用 factory_girl_rails
和 RSpec
。
我想创建 x Placement
并将其插入到一个数组中,其中一个属性递增其值。
我有一个可用的版本,但我想尽可能多地使用工厂女孩。
我的工作解决方案
def create_placements(x)
x.times.map { |i| create :placement, foo: i }
end
只有厂妹能实现吗?类似于 create_list :placement, x, foo: 1..x
?
FactoryGirl
有方法 *_list
,即。 G。 create_list
- 更多信息 here.
但是它只接受一组数据并将其用于其所有 'subjects',因此如果您希望每个数据在某些方面有所不同,我认为您的循环是这里最好的方法。
有点晚了,但是你可以用 sequences 来做到这一点。
对于您的情况,在您定义工厂 placement
的文件中,您应该将工厂 placement_foo_increment
或您想要的任何名称添加为子项。
那么工厂应该是:
factory :placement_foo_increment do
sequence(:foo) { |n| n - 1 }
end
那里有 - 1
因为 n
从 1 开始,而在您的代码中它是从零开始的。
我正在使用 factory_girl_rails
和 RSpec
。
我想创建 x Placement
并将其插入到一个数组中,其中一个属性递增其值。
我有一个可用的版本,但我想尽可能多地使用工厂女孩。
我的工作解决方案
def create_placements(x)
x.times.map { |i| create :placement, foo: i }
end
只有厂妹能实现吗?类似于 create_list :placement, x, foo: 1..x
?
FactoryGirl
有方法 *_list
,即。 G。 create_list
- 更多信息 here.
但是它只接受一组数据并将其用于其所有 'subjects',因此如果您希望每个数据在某些方面有所不同,我认为您的循环是这里最好的方法。
有点晚了,但是你可以用 sequences 来做到这一点。
对于您的情况,在您定义工厂 placement
的文件中,您应该将工厂 placement_foo_increment
或您想要的任何名称添加为子项。
那么工厂应该是:
factory :placement_foo_increment do
sequence(:foo) { |n| n - 1 }
end
那里有 - 1
因为 n
从 1 开始,而在您的代码中它是从零开始的。