有有许多旅行发票的项目。 新的故事来到我的方式,要求发票必须有一个行程。 我添加了一个验证validates :trips, presence: true
,但是它现在吹了一些我的测试,因为FactoryGirl正试图创造相关的行程之前保存发票。
FactoryGirl.define do
factory :invoice do
sequence(:invoice_id) { SecureRandom.uuid}
merchant
amount 100.00
item_count 1
paid false
currency "GBP"
invoice_type "pre-flight"
service_rendered false
cancelled false
after(:create) { |object| create(:trip, invoice_id: object.invoice_id)}
end
end
我能做些什么来创建这些对象。 最好是在工厂层面,因为有利用这种行为无数次的试验(目前失败的缘故吧。) 这似乎是在测试水平很好的解决。
更新仍与现在让我的测试绿色挣扎。 42个测试是用下面的代码示数出来。
验证失败:旅行不能为空
在我FactoryGirl代码我现在的更新线
before(:create) { |object| object << build(:trip, invoice_id: object.invoice_id)}
这是我此行的工厂也是如此。
FactoryGirl.define do
factory :trip do
depart_airport "MCI"
arrive_airport "ORD"
passenger_first_name "Joe"
passenger_last_name "Business"
passenger_count 1
departure_date {10.days.from_now}
invoice
end
end
工作现在 @andrykonchin是正确的。 我错过了我的东西before(:create)...
before(:create) { |object| object.trips << build(:trip, invoice_id: object.invoice_id)}