如何创建一个值递增的工厂列表

How to create a list of factories with one value incremented

我正在使用 factory_girl_railsRSpec

我想创建 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 开始,而在您的代码中它是从零开始的。