如何在Rails单元测试中显示失败的验证?

时间:2010-04-07 01:16:27

标签: ruby-on-rails unit-testing

摘要:单元测试失败告诉我哪个断言(文件:行)失败,但没有哪个验证导致失败。

更多信息:我的一个模特中有11个验证。无论我运行rake test:units --trace还是ruby -Itest test/unit/mymodel_test.rb,单元测试都很棒。然而,尽管它确切地告诉我哪个assert失败了,但我没有被告知哪个验证失败了。我必须遗漏一些明显的东西,因为我不能很好地向Google提出这个问题以获得答案。

谢谢:)

3 个答案:

答案 0 :(得分:7)

我认为你想要的是这个:

assert person.valid?, person.errors.full_messages.inspect

如果人物模型无效,则会打印出错误消息供您查看。

答案 1 :(得分:4)

要打印一个或多个失败的验证,请使用以下测试:

  test "post with neither name nor title" do
    p = Post.new
    assert p.valid?, p.errors.full_messages.inspect
  end

答案 2 :(得分:2)

您可以随时查看无效属性的对象错误。

class Person
   validates_presence_of :name
end

person = Person.new
person.valid?  # => false

person.errors[:name]  # =>  "can't be blank"
person.errors.full_messages  # => ["Name can't be blank"]

请查看ActiveRecord::Errors文档以获取更多信息。