提问人:Jon Schneider 提问时间:11/14/2022 更新时间:11/14/2022 访问量:133
Rails ActiveRecord 验证:断言 errors.added?:inclusion 意外失败并出现漏报
Rails ActiveRecord validation: Assert of errors.added? :inclusion unexpectedly fails with a false negative
问:
在我的 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 翻译文件,这种语法应该有效。
我怎样才能让最后一个断言按预期工作?
答:
2赞
Jon Schneider
11/14/2022
#1
Rails 5.2.2 中的行为发生了变化,当调用 ... 在 ActiveRecord 对象上,必须添加指定无效值的第三个参数。.errors.added
:inclusion
value
正如预期的那样,此断言通过:
assert car.errors.added? :car_type, :inclusion, value: 'airplane'
评论