代码之家  ›  专栏  ›  技术社区  ›  dbrown0708

为什么Post在我的Rails功能测试中失败了?

  •  5
  • dbrown0708  · 技术社区  · 15 年前

    当我在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
    

    但对象是受保护的方法。

    如何检查模型对象上由post调用导致的错误?

    我用的是Shoulda和工厂女孩,但我怀疑这没关系。

    2 回复  |  直到 10 年前
        1
  •  6
  •   Jeff    10 年前

    添加以下断言:

    assert_nil assigns(:user).errors
    

    如果保存对象时出错(可能是验证),并显示错误对象的值,则此操作将失败。

        2
  •  0
  •   proteantech    11 年前

    我使用的是Rails3.2.13,似乎Assert_Nil不能像前面的答案中所说的那样正常工作。

    这就是我的工作:

    assert_empty assigns(:user).errors
    

    我相信这是因为即使成功的“save”调用也会返回一个activeRecord:errors对象,该对象包含一个空的“messages”哈希,因此您也可以这样做:

    assert_empty assigns(:user).errors.messages