运行测试时出现以下错误
NoMethodError: undefined method 'departure_date' for nil:NilClass
这是测试。
test "successful disbursement should respond with success" do
post :disbursement, {id: @invoice.invoice_id, trip: attributes_for(:trip)}
assert_response :success
end
在测试的设置部分,我正在创建以下内容。
setup do
@controller = Api::V1::InvoicesController.new
@invoice = create(:invoice)
@trip = create(:trip)
end
旅行工厂看起来像这样。
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
发票工厂看起来像这样。
FactoryGirl.define do
factory :invoice do
sequence(:invoice_id) { |n| "INV#{n}"}
merchant
amount 500.00
item_count 5
paid false
currency "GBP"
invoice_type "pre-flight"
end
end
无法弄清楚如何确保发票有旅行。我猜这就是为什么测试找不到应该的departure_date。
答案 0 :(得分:1)
根据我的理解,您正试图将旅行和发票联系起来。如果我的理解是正确的,试试这个。
setup do
@controller = Api::V1::InvoicesController.new
@invoice = create(:invoice)
@trip = create(:trip, invoice: @invoice)
end