Rails ActiveRecord验证:Assert of errors.added?:包含意外失败,为假阴性.<



在我的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

我希望这个语法应该工作,根据这个答案,以及它链接的ActiveRecord i18n翻译文件。

如何使最后一个断言按预期工作?

在Rails 5.2.2中有一个行为变化,当调用.errors.added…在ActiveRecord对象的:inclusion上,必须添加第三个value参数来指定无效值。

这个断言如预期的那样通过了:

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

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

相关内容

  • 没有找到相关文章

最新更新