MiniTest中的工厂女孩​​

时间:2016-04-26 16:14:03

标签: ruby-on-rails ruby unit-testing factory-bot minitest

我正在我早先的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。是不是第一个更好的测试,看它是否成功保存到数据库?

1 个答案:

答案 0 :(得分:1)

根据您之前问题中的Factory,您正在调用before_create来设置trip。但是,您没有创建该对象,而是build它。

如果您将before_create更改为after_build,那么

这是一个有用的链接,来自Thoughtbots的old article关于"回调"可在FactoryGirl获得

相关问题