RoR:最小错误:期望假为真

问题描述 投票:0回答:1

寻求使用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.

我不知道我在做什么错?谢谢。

ruby-on-rails minitest
1个回答
0
投票

assert thing.valid?是一种测试反模式,已被Rails教程书所普及。这是一种反模式,因为您要一次测试每个验证,而误报和否定的可能性都很大。错误消息也完全告诉您测试失败的原因。

相反,如果要测试验证,请使用errors object

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
© www.soinside.com 2019 - 2024. All rights reserved.