ruby-on-rails Rails活动记录验证:错误Assert,添加?:包含意外失败,出现假阴性

iyr7buue  于 2022-11-19  发布在  Ruby
关注(0)|答案(1)|浏览(88)

在我的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按预期工作?

erhoui1w

erhoui1w1#

Rails 5.2.2中的行为发生了变化,在ActiveRecord对象上调用.errors.added ... :inclusion时,必须添加第三个value参数来指定无效值。
此Assert如预期的那样通过:

assert car.errors.added? :car_type, :inclusion, value: 'airplane'

参考:https://github.com/rails/rails/issues/34652

相关问题