FactoryGirl create_list具有不同的值

AGi*_*des 5 ruby rspec ruby-on-rails factory-bot

我正在尝试使用FactoryGirl来创建项目列表,但我需要这些项目不按顺序排列.这就是我所拥有的,但我希望它是DRYer.

spec.rb

context "three out of order" do
  before do
    FactoryGirl.create(:thing, ordering: 3)
    FactoryGirl.create(:thing, ordering: 1)
    FactoryGirl.create(:thing, ordering: 2)
  end

   it "should sort the things in order" do
    expect(Thing.all.map(&:ordering)).to eq([1, 2, 3])
   end
end
Run Code Online (Sandbox Code Playgroud)

我知道您可以创建多个项目:

   FactoryGirl.create_list(:thing, ordering: 3 )
Run Code Online (Sandbox Code Playgroud)

但我想创建项目,以便测试他们的订单,他们将按顺序创建所有项目,因为我在工厂中设置了序列.

Bob*_*Bob 1

那这个呢?

before do
  (1..3).to_a.shuffle.each do |order|
    FactoryGirl.create(:thing, ordering: order)
  end
end
Run Code Online (Sandbox Code Playgroud)

  • 这是解决问题但没有回答问题的典型案例。显然这是可以做到的,它非常类似于原始示例,但这里的目标是用户“create_list”并使其更简单。问题不是“如何创建三个具有不同名称的模型”,而是“我可以使用 create_list 创建三个具有不同名称的模型”,不幸的是这是不可能的。 (4认同)