我正在我早先的question捎带我在那里创建一个父母和孩子的工厂。我正在运行我的单元测试并且有一个简单的不通过。
test "invoice can save" do
invoice = build(:invoice)
assert invoice.save, "Error message: #{invoice.errors.full_messages}"
end
返回以下错误。
错误消息:[“Trips不能为空”]
但是以下代码可以正常工作。
test "invoice can save" do
invoice = create(:invoice)
assert invoice.save, "Error message: #{invoice.errors.full_messages}"
end
我的理解是build
应该将它保存在内存中,直到调用save。是不是第一个更好的测试,看它是否成功保存到数据库?
答案 0 :(得分:1)
根据您之前问题中的Factory
,您正在调用before_create
来设置trip
。但是,您没有创建该对象,而是build
它。
如果您将before_create
更改为after_build
,那么
这是一个有用的链接,来自Thoughtbots的old article关于"回调"可在FactoryGirl获得