MiniTest来自工厂的父母和孩子进行测试

时间:2016-03-31 18:43:01

标签: ruby-on-rails ruby factory-bot minitest

运行测试时出现以下错误 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。

1 个答案:

答案 0 :(得分:1)

根据我的理解,您正试图将旅行和发票联系起来。如果我的理解是正确的,试试这个。

setup do
    @controller = Api::V1::InvoicesController.new
    @invoice = create(:invoice)
    @trip = create(:trip, invoice: @invoice)
  end
相关问题