assert_not в учебнике по рельсам ch6 - моделирование пользователей (концептуальное)

Пытаюсь перевести это на буквальный английский. Тест «имя должно присутствовать» говорит: экземпляр user.name равен пустой строке. Затем подтвердите, что это недопустимый экземпляр user.name, но, поскольку я еще не требовал проверки наличия имени в моей модели пользователей, тест становится красным? Кто-нибудь может подтвердить, что у меня голова в порядке? Что хорошего можно сказать об assert_not в целом? Может ли кто-нибудь изменить его, чтобы утверждать, и каким-то образом сделать его ложным? Спасибо!

require 'test_helper'

class UserTest < ActiveSupport::TestCase

  def setup
    @user = User.new(name: "Example User", email: "[email protected]")
  end

  test "should be valid" do
    assert @user.valid?
  end

  test "name should be present" do
    @user.name = "     "
    assert_not @user.valid?
  end
end

person jrjames83    schedule 20.03.2015    source источник


Ответы (1)


Правильный.

Вы также можете написать этот тест на английском языке как: Возьмите пользователя и назначьте имя этого пользователя в виде набора пробелов. Я утверждаю, что этот пользователь не должен быть действительным.

Теперь, поскольку вы написали тест раньше кода, который он тестирует (TDD), ваш тест завершится ошибкой (и это нормально). После того, как вы введете проверку пользователя, пользователь вернется как недействительный, и ваш тест будет пройден.

Если вам не нравится синтаксис, указанный в вашем вопросе, вы можете сформулировать свой тест по-другому, например:

test "name should be present" do
  @user.name = "     "
  @user.should_not be_valid
end
person anyarms    schedule 30.04.2015