在我的Rails(版本6.0.5.1)ActiveRecord模型中,我有一个inclusion
验证,如下所示:
validates :car_type, inclusion: ['coupe', 'sedan', 'convertible']
在相应的测试文件中,我尝试测试当一个不在有效值列表中的值(如'airplane'
)被赋给car_type
属性时,是否会引发验证错误。
下列MiniTest判断提示如预期般通过:
assert car.errors.invalid?
assert car.errors.include? :car_type
assert car.errors.added? :car_type, 'is not included in the list'
但是,下列判断提示会在Minitest::Assertion: Expected false to be truthy.
中失败:
assert car.errors.added? :car_type, :inclusion
我希望这个语法 * 应该 * 工作,每个this answer,及其链接的ActiveRecord i18n翻译文件。
如何使最后一个Assert按预期工作?
1条答案
按热度按时间erhoui1w1#
Rails 5.2.2中的行为发生了变化,在ActiveRecord对象上调用
.errors.added
...:inclusion
时,必须添加第三个value
参数来指定无效值。此Assert如预期的那样通过:
参考:https://github.com/rails/rails/issues/34652