【发布时间】:2015-12-19 09:37:29
【问题描述】:
我有以下课程:
class Company < ActiveRecord::Base
validates :name, :presence => true
has_many :employees, :dependent => :destroy
end
class Employee < ActiveRecord::Base
validates :first_name, :presence => true
validates :last_name, :presence => true
validates :company, :presence => true
belongs_to :company
end
我正在为Employee 类编写测试,所以我正在尝试为Company 创建double,Employee 将使用它。
下面是我的 Rspec 的 sn-p
let(:company) { double(Company) }
let(:employee) { Employee.new(:first_name => 'Tom', :last_name => 'Smith', :company => company) }
context 'valid Employee' do
it 'will pass validation' do
expect(employee).to be_valid
end
it 'will have no error message' do
expect(employee.errors.count).to eq(0)
end
it 'will save employee to database' do
expect{employee.save}.to change{Employee.count}.from(0).to(1)
end
end
我的所有 3 个测试都收到以下错误消息
ActiveRecord::AssociationTypeMismatch:
Company(#70364315335080) expected, got RSpec::Mocks::Double(#70364252187580)
我认为我尝试创建double 的方式是错误的。你能指导我如何创建一个double of Company 可以被Employee 用作他们的关联。
我没有使用FactoryGirl。
非常感谢。
【问题讨论】:
标签: ruby-on-rails rspec