2009-04-08 105 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