RoR: ошибка Minitest: ожидается, что ложь будет правдой - PullRequest
0 голосов
/ 08 марта 2020

ищет помощи в реализации простого первого теста с использованием minitest (Rails 5, Ruby 2.7.0)

car_test.rb

require 'test_helper'

class CarTest < ActiveSupport::TestCase

  test 'valid car' do
    car = Car.new(title: 'SALOON', style: '1')
    assert car.valid?
  end

end

Моя модель car.rb

class Car < ApplicationRecord
    validates :title, :style, presence: true
end

Когда я запускаю тест: rake test TEST = test / models / car_test.rb

Expected false to be truthy.

Я не знаю, что я делаю неправильно? Спасибо.

1 Ответ

0 голосов
/ 08 марта 2020

assert thing.valid? - это анти-шаблон тестирования, который был популяризирован в учебнике по Rails. Это анти-паттерн, так как вы тестируете каждую валидацию одновременно, и возможности как для ложных, так и для отрицательных результатов огромны. Сообщение об ошибке также абсолютно ничего не говорит о том, почему тест не удался.

Вместо этого, если вы хотите проверить проверки, используйте объект errors .

require 'test_helper'

class CarTest < ActiveSupport::TestCase
  test 'title must be present' do
    car = Car.new(title: '')
    car.valid?
    assert_includes car.errors.messages[:title], "can't be blank"
  end
  test 'style must be present' do
    car = Car.new(style: '')
    car.valid?
    assert_includes car.errors.messages[:style], "can't be blank"
  end
end
...