当前位置:  开发笔记 > 编程语言 > 正文

Rspec:如何创建模拟关联

如何解决《Rspec:如何创建模拟关联》经验,为你挑选了0个好方法。

我有以下课程:

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课程编写测试,因此我试图创建doubleCompany所使用Employee

以下是我的Rspec的代码段

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

非常感谢。

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有