错误。与:exclusion一起使用时返回false

时间:2020-04-03 14:52:16

标签: ruby-on-rails ruby testing rspec rspec-rails

在递归Rails模型中,我验证了该模型无法引用自身:

validates :parent_entity, exclusion: { in: ->(entity) { [entity] } }

这成功,并且设置了带有正确消息的排除错误。我可以通过Rails控制台批准。

在Rspec测试中,我想检查是否添加了适当的排除错误:

it 'parent_entity cannot be same entity as child_entity' do
  @child_entity1.parent_entity = @child_entity1
  @child_entity1.valid?
  expect(@child_entity1.errors.added?(:parent_entity, :exclusion)).to be_truthy
end

测试未能在期望中返回假值。

前面的方法对e来说是完美的。 G。空白错误,但不能排除。如果我在测试中将“:exclusion”与已解决的错误消息“已保留”交换,则可以使其正常运行,但这不是我想要的,应该做的。

1 个答案:

答案 0 :(得分:2)

是从rails docs那里购买的吗?方法:

如果错误消息需要选项,则返回true,并显示 选项正确,如果选项不正确或缺失,则为false。

因此,选项必须完全匹配。 :exclusion的必要选项是value,并作为最后一个参数传递:

@child_entity1.errors.added?(:parent_entity, :exclusion, value: @child_entity1)