【发布时间】:2013-08-16 11:55:46
【问题描述】:
假设我有一个公司,它可能包含许多员工类型的员工,可能包含许多任务类型的任务。
class Company < ActiveRecord::Base; has_many :employees; end
class Employee < ActiveRecord::Base; belongs_to :company, has_many :tasks; end
class Task < ActiveRecord::Base; belongs_to :employee; end
使用 FactoryGirl 之类的工具,我可能会尝试使用 FactoryGirl.create(:task) 创建任务,从而强制创建员工和公司。
我想做的是创建有效的 ActiveRecord 对象,但将它们的关系排除在外,以使我的测试更快。
我想出的一个解决方案是不使用 FactoryGirl,而是使用 mock_model/stub_model 创建新对象来存根它们的关联。
例子:
employee = mock_model(Employee)
task = Task.create! name: "Do that", employee: employee
我做得对吗?
谢谢。
【问题讨论】:
-
使用 FactoryGirl.build_stub
-
FactoryGirl.build_stubbed(不是 build_stub)的工作原理非常棒,谢谢!
标签: ruby-on-rails rspec mocking stubbing