【发布时间】:2019-01-30 03:17:32
【问题描述】:
class Proofreader < Role
has_many :proofreading_jobs, :class_name => 'ProofreadingJob', :foreign_key => 'proofreader_id'
end
class ProofreadingJob < ApplicationRecord
belongs_to :proofreader, class_name: 'Role', foreign_key: :proofreader_id, optional: true
belongs_to :client, class_name: 'Role', foreign_key: :client_id
end
class Role < ApplicationRecord
belongs_to :user
end
proofreaders factory:
FactoryBot.define do
factory :proofreader do
type { 'Proofreader'}
hourly_rate { 15 }
association :user, factory: :employee_user
factory :proofreader_with_work_events do
after :create do |proofreader|
create(:user_event, :recurring_mwf, user: proofreader.user)
end
end
end
end
spec/model_roles/proofreader_spec.rb
RSpec.describe 'Proofreader', type: :model do
describe "Associations" do
it { should have_many(:proofreading_jobs) }
end
end
测试失败:
Failure/Error: it { should have_many(:proofreading_jobs) }
expected Associations to respond to `has_many?`
显然,ProofreadingJob 类在那里有关联。如何编写此测试以使其通过?
【问题讨论】:
-
你能分享
ProofreadingJob模型协会吗? -
根据要求,我添加了 ProofreadingJob 类
-
你可以试试这个
it { should have_many(:proofreading_jobs).class_name('ProofreadingJob').with_foreign_key('proofreader_id') } -
你有
Factory的Proofreader模型吗?并正确配置shoulda-matchers -
尝试了您的建议并得到:#<:matchers::builtin::has:0x007fdde8aa7918> 的未定义方法 `class_name'
标签: ruby-on-rails rspec ruby-on-rails-5 rspec-rails