【发布时间】:2016-10-24 23:08:28
【问题描述】:
我希望能够仅在每个特定测试中创建与 ID 的关联,尽量避免在工厂中定义它们。 我一直在关注Rails 4 Test Prescriptions
避免在 factory_girl 定义中自动定义关联。 根据需要逐个测试设置它们。您将获得更易于管理的结果 测试数据。
class Workspace < ActiveRecord::Base
has_many :projects
end
class Project < ActiveRecord::Base
belongs_to :workspace
end
这就是我想要的
test "" do
project_with_id = build_stubbed(:project)
workspace_with_id = build_stubbed(:workspace)
workspace_with_id.projects.push(project_with_id)
end
我正在使用 build_stubbed 创建有效的 ID,这会出现以下错误:
*** RuntimeError 异常:不允许存根模型访问数据库 - Project#save({:validate=>true})
所以,看了工厂女的documentation我想出了工作协会,但我不想在工厂里定义它们,甚至没有特征。
FactoryGirl.define do
factory :project do
association :workspace, strategy: :build_stubbed
end
end
test "" do
project = build_stubbed(:project)
end
这行得通,因为我可以调用 project.workspace,并且两者都有一个有效的 ID
如何创建有效的关联(带 ID),但不接触数据库,只使用 Factory girl 来创建独立对象?
【问题讨论】:
-
你在使用 rspec 吗?
-
问题被标记为 minitest 所以假设没有问题很安全
标签: ruby-on-rails ruby unit-testing factory-bot minitest