FactoryGirl create_list с разными значениями

Я пытаюсь с помощью 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

Я знаю, что вы можете создать несколько элементов с помощью:

   FactoryGirl.create_list(:thing, ordering: 3 )

но я хотел создавать предметы, чтобы он проверял их порядок, и они создавали их все по порядку, так как у меня есть последовательность, настроенная на фабрике.


person AGirlThatCodes    schedule 18.11.2014    source источник


Ответы (1)


Что насчет этого?

before do
  (1..3).to_a.shuffle.each do |order|
    FactoryGirl.create(:thing, ordering: order)
  end
end
person Bob    schedule 18.11.2014
comment
Это классический случай решения проблемы, но не ответа на вопрос. Очевидно, что это можно сделать, это очень похоже на исходный пример, но целью здесь является пользователь create_list, и это проще. Вопрос был не в том, как создать три модели с разными именами, а в том, могу ли я использовать create_list для создания трех моделей с разными именами, что, к сожалению, невозможно. - person Peter R; 17.06.2017