beiseite beiseite Argumente, ob Sie die Existenz der Assoziationen eines Modells testen sollten, habe ich ein Modell Order
genannt und ich bestätige, dass es mindestens eine item
in hat sein has_many
Verein mit:Validierung, dass eine has_many Assoziation hat mindestens ein Modell bei der Verwendung von FactoryGirl
class Order < ActiveRecord::Base
has_many :items
validates :items, presence: true
end
I factory gesetzt habe meine Fabriken Fussel (auf Gültigkeit überprüft). Daher ist meine Auftragsfactory ungültig, es sei denn, ich erstelle einen Artikel für die has_many
Kollektion.
Meine orders
Fabrik sieht wie folgt aus:
FactoryGirl.define do
factory :order do
ignore do
items_count 1
end
after(:build) do |order, evaluator|
create_list(:item, evaluator.items_count, order: order)
end
end
end
Nach Factory Girl des Getting Started:
FactoryGirl.lint builds each factory and subsequently calls #valid? on it
Allerdings, wenn ich meine specs laufen, wirft Factory Girl eine FactoryGirl::InvalidFactoryError
weil die Auftragsfabrik ist ungültig.
Umgehung
after(:build) do |order, evaluator|
evaluator.items_count.times do
order.items << FactoryGirl.create(:item)
end
#create_list(:item, evaluator.items_count, order: order)
end
Sie machen einen 'create_list (: Artikel)', haben Sie 'item' Fabrik definiert? – vee
Ja. Die Artikelfabrik ist da und ist gültig. – Undistraction
Ich denke, du solltest 'after (: create)' anstelle von 'after (: build)' dafür verwenden, denn mit nur build wird 'order' nicht gespeichert und es gibt keine' order_id' für 'items'. – vee