在ch6 rails教程中的assert_not - 建模用户(概念)

时间:2015-03-20 14:40:31

标签: railstutorial.org

尝试将其翻译成英文字面。测试“名称应该存在”是说: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

1 个答案:

答案 0 :(得分:0)

正确。

你也可以用英语写这个测试: 取一个用户,并将该用户的名称指定为一堆空格。我断言该用户不应该有效。

现在,因为您在测试代码(TDD)之前编写了测试,您的测试将失败(这是A-OK)。一旦您进行了用户验证,用户将返回无效状态,您的测试将通过。

如果您不喜欢问题中引用的语法,您可以用不同的方式表达您的测试,例如:

test "name should be present" do
  @user.name = "     "
  @user.should_not be_valid
end