来自工厂的 MiniTest parent 和 child 正在测试中
MiniTest parent and child from factory in test
我在 运行 我的测试中遇到以下错误。
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
trip工厂是这样的
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 的原因。
据我了解,您试图将行程和发票关联起来。如果我的理解是正确的,试试这个。
setup do
@controller = Api::V1::InvoicesController.new
@invoice = create(:invoice)
@trip = create(:trip, invoice: @invoice)
end
我在 运行 我的测试中遇到以下错误。
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
trip工厂是这样的
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 的原因。
据我了解,您试图将行程和发票关联起来。如果我的理解是正确的,试试这个。
setup do
@controller = Api::V1::InvoicesController.new
@invoice = create(:invoice)
@trip = create(:trip, invoice: @invoice)
end