我有以下规格:
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