gpt4 book ai didi

ruby-on-rails - 如何更改 shoulda 匹配器的主题

转载 作者:数据小太阳 更新时间:2023-10-29 07:56:08 24 4
gpt4 key购买 nike

我在类(class)中遇到以下属性问题。我也有一个在数据库级别强制执行的日期属性,存在为真:

验证 :date, presence: true

除此之外,我需要为以下两个属性强制组合唯一性

validates :name, uniqueness: { scope: :parent_id }

到目前为止...一切正常,但我想要一个测试唯一性的规范

它 { 应该 validate_uniqueness_of(:name).scoped_to(:parent_id) }

但是上面一行的问题是它会尝试通过使用随机名称和 parent_id 值在数据库中插入一条记录,让日期一为零。因此,它在数据库上失败。

我已经尝试在测试中执行 subject { build(:my_model) },但是 it 行仍在创建它自己的一个并且没有设置日期属性。

如何让 shoulda 使用我创建的主题?我错过了什么?

最佳答案

应该匹配器需要在数据库中创建一个单独的记录来测试它不是唯一的情况。它会跳过 rails 验证来执行此操作,但不能跳过您的数据库验证。如果您手动创建一个,它将使用它。将您的测试更改为:

subject { FactoryGirl.build(:my_model) }
it { should validate_uniqueness_of(:name).scoped_to(:parent_id) }

这在 shoulda matchers 文档中有更深入的介绍。 http://www.rubydoc.info/github/thoughtbot/shoulda-matchers/Shoulda/Matchers/ActiveRecord#validate_uniqueness_of-instance_method

关于ruby-on-rails - 如何更改 shoulda 匹配器的主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21076066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com