工厂机器人关联丢失

问题描述 投票:0回答:0

我有以下规格:

RSpec.describe "foo", type: :system, js: true do
  describe "foo" do
    let(:project) { create(:project) }
    let(:invoice) { create(:invoice, project:) }

    it "foo" do
      puts "*" * 50
      puts project
      puts project.valid?
      puts project.to_json
      puts invoice
    end
  end
end

但我总是得到这个错误:

Randomized with seed 28429
**************************************************
#<Project:0x000000010bc284c0>
true
{"id":374,"title":"Project 1","number":1,"description":null,"deadline":null,"archived":false,"customer_id":362,"service_rates":null,"budget_type":"minutes","budget_rate":0.0,"created_at":"2023-05-16T20:25:41.708Z","updated_at":"2023-05-16T20:25:41.708Z","status":"requested","slug":"1-project-1","tickets_open":1,"tickets_closed":0,"account_id":27,"status_date":null,"pnr":"11","briefing":null}
F

Failures:

  1) foo foo foo
     Failure/Error: let(:invoice) { create(:invoice, project:) }
     
     ActiveRecord::RecordInvalid:
       Validation failed: Project can't be blank, Project must exist
     # ./spec/system/accounting/invoices_editor_spec.rb:8:in `block (3 levels) in <main>'
     # ./spec/system/accounting/invoices_editor_spec.rb:15:in `block (3 levels) in <main>'
     # ./spec/system/support/cuprite_setup.rb:66:in `block (2 levels) in <main>'
     # ./spec/system/support/better_rails_system_tests.rb:32:in `block (2 levels) in <main>'

我不明白这个,我读过几次,这是如何通过协会的方式。

这是我的发票机器人:

# frozen_string_literal: true
require "faker"

FactoryBot.define do
  factory :invoice do
    author { association :user }
    association :project
    accounting
    invoice_type { "final_invoice" }
  end
end
ruby rspec factory-bot
© www.soinside.com 2019 - 2024. All rights reserved.