为什么我的Rails功能测试中邮寄失败了?

5
当我在我的Rails功能测试中运行一个post请求时。
setup do
  post :create, :user => Factory.attributes_for(:user)
end

当代码出现问题时并且我没有得到任何反馈,我就会知道它失败了。 我知道它失败了,因为我用来确保数据库中有一个额外记录的断言失败了。
我尝试去做。
setup do
  post :create, :user => Factory.attributes_for(:user)
  assert_valid @controller.object
end

但是 object 是一个受保护的方法。

我该如何检查从 post 调用结果中得到的 model 对象上的错误?

我正在使用 Shoulda 和 Factory Girl,但我怀疑这并不重要。

2个回答

6

添加以下断言:

assert_nil assigns(:user).errors

如果在保存对象时出现错误(例如验证错误),则会失败,并显示错误对象的值。

谢谢!这也对我有很大帮助! :) - CalebHC

0

我正在使用Rails 3.2.13,但似乎assert_nil并不像之前的答案所述那样正常工作。

以下是对我有效的方法:

assert_empty assigns(:user).errors

我认为这是因为即使成功执行“保存”调用,也会返回一个包含空“messages”哈希的ActiveRecord:Errors对象,因此您也可以这样做:

assert_empty assigns(:user).errors.messages

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接