我使用rails创建用户模型创建模型用户名:string email:string,然后我在user.rb(模型)中写了一些验证
require 'test_helper'
class UserTest < ActiveSupport::TestCase
def setup
@user = User.new(name: "John Cena", email: "user@example-domain.de")
end
test "should be valid" do
assert @user.valid?
end
test "should not be valid" do
@user.name = ""
@user.email = ""
assert_not @user.valid?
end
end
对此模型的简单测试
{{1}}
一切都很好,但如果我评论模型文件测试中的1行验证仍在通过。仅当两行都被注释时,测试失败。我应该怎么做才能对这个测试进行rapair?我不想从这个进行2次测试。
答案 0 :(得分:1)
测试模型验证时,不要断言模型有效或无效。它会引发误报并使其成为您的测试需要满足模型中每个验证的要求 - 添加属性或验证意味着您需要重写测试!
相反,您应该通过查看errors对象来验证验证是否存在。
class UserTest < ActiveSupport::TestCase
def setup
@user = User.new
@user.valid?
@messages = @user.errors.messages
end
test "validates name" do
assert_includes @messages[:name], "can't be blank"
end
test "validates email" do
assert_includes @messages[:email], "can't be blank"
end
end
您的功能和集成测试将涵盖整体验证 - 因此,如果您满足所有要求,则无需测试记录是否有效。