2016-03-31 4 views
1

テストを実行中に次のエラーが発生します。
NoMethodError: undefined method 'departure_date' for nil:NilClassテストの工場からの親と子のMiniTest

ここはテストです。

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を見つけることができないのかと推測しています。

答えて

1

私が理解するところでは、旅行と請求書の関連付けを試みています。私の理解が正しいなら、これを試してください。

setup do 
    @controller = Api::V1::InvoicesController.new 
    @invoice = create(:invoice) 
    @trip = create(:trip, invoice: @invoice) 
    end 
関連する問題