尝试将其翻译成英文字面。测试“名称应该存在”是说:user.name的实例等于空字符串。然后断言它不是user.name的有效实例,但由于我的用户模型中没有要求验证名称YET的存在,测试会变红吗?有人可以确认我的头直接?一般来说,考虑assert_not的好方法是什么?有人可以将其更改为断言并以某种方式使其变为假吗?谢谢!
require 'test_helper'
class UserTest < ActiveSupport::TestCase
def setup
@user = User.new(name: "Example User", email: "user@example.com")
end
test "should be valid" do
assert @user.valid?
end
test "name should be present" do
@user.name = " "
assert_not @user.valid?
end
end
答案 0 :(得分:0)
正确。
你也可以用英语写这个测试: 取一个用户,并将该用户的名称指定为一堆空格。我断言该用户不应该有效。
现在,因为您在测试代码(TDD)之前编写了测试,您的测试将失败(这是A-OK)。一旦您进行了用户验证,用户将返回无效状态,您的测试将通过。
如果您不喜欢问题中引用的语法,您可以用不同的方式表达您的测试,例如:
test "name should be present" do
@user.name = " "
@user.should_not be_valid
end