2009-04-08 153 views
5

當我運行在我的Rails後功能測試爲什麼在我的Rails功能測試中發佈失敗?

setup do 
    post :create, :user => Factory.attributes_for(:user) 
end 

和失敗,我沒有得到任何反饋,爲什麼。我知道它失敗了,因爲我的斷言確保數據庫中有一個附加記錄失敗。

我試圖做

setup do 
    post :create, :user => Factory.attributes_for(:user) 
    assert_valid @controller.object 
end 

,但對象是一個受保護的方法。

如何檢查通過郵件調用產生的模型對象上的錯誤?

我正在使用Shoulda和Factory Girl,但我懷疑這並不重要。

回答

6

添加以下斷言:

assert_nil assigns(:user).errors 

是否有保存你的對象(也許是驗證)錯誤,這些錯誤會失敗,並顯示你的錯誤的值對象。

+0

這正是我想要的。謝謝! – dbrown0708 2009-04-09 00:03:53

0

我使用rails 3.2.13,它好像assert_nil不能正常工作,如前面的答案中所述。

這是爲我工作:

assert_empty assigns(:user).errors 

我相信這是因爲即使成功「拯救」調用返回一個ActiveRecord:錯誤對象以「消息」的空哈希含所以你也可以這樣做這個:

assert_empty assigns(:user).errors.messages