2017-01-23 3 views
0

должен я создал модель пользователя, используя рельсы создания модели Имя пользователя: строка электронной почты: строка, а затем я написал некоторые проверки в user.rb (модель)Модель тест прохождение, когда он не

class User < ApplicationRecord 
    validates :name, presence: true 
    validates :email, presence: true 
end 

и простой тест эта модель

require 'test_helper' 

class UserTest < ActiveSupport::TestCase 
    def setup 
    @user = User.new(name: "John Cena", email: "[email protected]") 
    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 строку проверки в файле, то тест файла все еще проходил. Тест не работает, только если обе строки прокомментированы. Что я должен сделать, чтобы попробовать этот тест? Я не хочу делать 2 теста из этого.

+0

Я не понимаю, какая ошибка у вас на тестах? пожалуйста, вставьте его –

+0

проблема beacue я не получаю ошибку, когда я должен. есть утверждения, но этого не должно быть. , когда у меня есть 'класса User AbUndZu

+0

Может быть, это что-то с пружинным кэшированием? try bin/spring stop – siegy22

ответ

1

При проверке проверки модели не просто утверждают, что модель действительна или недействительна. Он предлагает ложные срабатывания и делает так, чтобы ваши тесты удовлетворяли требованиям каждой проверки в модели - добавление атрибута или подтверждение означает, что вам нужно переписать тест!

Вместо этого вы должны проверить, существует ли проверка, просматривая объект ошибок.

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 

Ваших функциональные и интеграционные тесты будут охватывать валидации в целом - так что ваш не нужно, чтобы проверить, что запись является действительной, если вы удовлетворяете все требования.

Смежные вопросы