2014-11-18 5 views
5

Ich versuche FactoryGirl zu verwenden, um eine Liste von Elementen zu erstellen, aber ich brauche die Elemente, um nicht in Ordnung zu sein. Das ist was ich habe, aber ich möchte, dass es DRYer ist.FactoryGirl create_list mit verschiedenen Werten

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 

Ich weiß, dass Sie mehrere Elemente mit erstellen:

FactoryGirl.create_list(:thing, ordering: 3) 

aber ich wollte Gegenstände schaffen, damit sie ihre Reihenfolge getestet, und sie würden schaffen alle von ihnen in Reihenfolge, da ich Sequenz in der Fabrik eingerichtet habe.

Antwort

1

Was ist damit?

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

Dies ist ein klassischer Fall der Lösung des Problems, aber nicht die Frage zu beantworten. Natürlich könnte man das machen, es ist sehr ähnlich wie im ursprünglichen Beispiel, aber das Ziel ist hier der Benutzer 'create_list' und um es einfacher zu halten. Die Frage war nicht "Wie kann ich drei Modelle mit unterschiedlichen Namen erstellen", sondern "Kann ich mit create_list drei Modelle mit unterschiedlichen Namen erstellen", was leider nicht möglich ist. –