iro*_*and 13 rspec ruby-on-rails ruby-on-rails-4 factory-bot
有一个Company类has_many QuarterValue,我有一个RSpec测试.
let(:company) { Company.create }
describe 'company has many quarter values' do
before do
10.times { create(:quarter_value, company: company) }
end
it 'has 10 quarter values' do
expect(company.quarter_values.count).to eq(10)
end
end
Run Code Online (Sandbox Code Playgroud)
测试通过.我的问题是,当我放在我无法访问binding.pry的expect匹配器上方时company.quarter_values,返回空数组[].
如何使用?访问测试中的has_many模型对象?RSpecbinding.pry
FactoryGirl.define do
factory :company do
sequence(:code) { |n| n + 1000 }
end
factory :quarter_value do
company
end
end
Run Code Online (Sandbox Code Playgroud)
您需要将代码修改为如下所示:
let(:company) { Company.create }
describe 'company has many quarter values' do
before do
10.times { create(:quarter_value, company: company) }
company.reload
end
it 'has 10 quarter values' do
expect(company.quarter_values.count).to eq(10)
end
end
Run Code Online (Sandbox Code Playgroud)
您在开始时创建的 company 变量并不知道它已被赋予任何quarter_values. 您需要致电company.reload以更新公司的新关系,因为该Company模型的实例未涉及create(:quarter_value, company: company)