2014-11-18 17 views
5

Próbuję użyć FactoryGirl, aby utworzyć listę przedmiotów, ale potrzebuję elementów, aby nie były w porządku. To jest to, co mam, ale chciałbym, żeby to był DRYER.FactoryGirl create_list z różnymi wartościami

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 

Wiem, że można utworzyć kilka pozycji z:

FactoryGirl.create_list(:thing, ordering: 3) 

ale chciałem stworzyć przedmioty więc przetestowane ich kolejność, a oni tworzyć wszystko z nich w kolejności, ponieważ mam sekwencję ustawioną w fabryce.

Odpowiedz

1

Co z tym?

before do 
    (1..3).to_a.shuffle.each do |order| 
    FactoryGirl.create(:thing, ordering: order) 
    end 
end 
+2

Jest to klasyczny przypadek rozwiązania problemu, ale nie odpowiada na pytanie. Oczywiście można to zrobić, jest bardzo podobny do oryginalnego przykładu, ale celem jest tutaj użytkownik 'create_list' i utrzymanie go w prostszy sposób. Pytanie nie brzmiało: "Jak utworzyć trzy modele o różnych nazwach", ale raczej "Czy mogę użyć create_list do utworzenia trzech modeli o różnych nazwach", co niestety nie jest możliwe. –

Powiązane problemy