2016-04-26 111 views
0

我捎帶在我早些時候的question那裏我有一家工廠創建一個父母和孩子。我正在運行我的單元測試,並且有一個不通過的簡單測試。MiniTest的工廠女孩​​

test "invoice can save" do 
    invoice = build(:invoice) 
    assert invoice.save, "Error message: #{invoice.errors.full_messages}" 
end 

返回以下錯誤。

錯誤消息: 「跳閘不能爲空」]

但是,下面的代碼工作。

test "invoice can save" do 
    invoice = create(:invoice) 
    assert invoice.save, "Error message: #{invoice.errors.full_messages}" 
end 

我的理解是,build應該將它保存在內存中,直到調用save。是不是第一個更好的測試,看看它是否成功地保存到數據庫?

回答

1

根據您先前問題中的Factory,您致電before_create設置trip。但是,您不是創建該對象,而是您創建的對象。

如果您將before_create更改爲after_build那麼應該解決了這個問題!

這裏是一個有用的鏈接從Thoughtbots的old article有關「回調」提供FactoryGirl

+1

1日感謝您使用形容詞小氣。 第二謝謝你通過這個和我連接的問題。 我一定會給你鏈接評論的文章。 – CheeseFry

+0

很高興有人欣賞一些有趣的形容詞哈哈:)並希望響應也幫助解決了更大的測試問題! –