【问题标题】:How to test that I am validating that a relationship has at least one entry in RSpec?如何测试我正在验证一个关系在 RSpec 中至少有一个条目?
【发布时间】:2016-03-17 19:45:05
【问题描述】:

我有一个 has_many 关系,应该总是至少有一个条目。如果没有任何条目,则无效。

如何在 RSpec 中测试该验证?

我得到的最接近的是it { should validate_length_of(:fees).is_at_least(1) },但这是为字符串设计的,无法使用。

【问题讨论】:

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


    【解决方案1】:

    假设你有一个像 described_class_object 这样的类的实例,你可以这样做:

    context 'when there are no fees' do
      it 'is not valid' do
        described_class_object = described_class.build(...some params...)
        described_class_object.fees = []
        expect(described_class_object).to_not be_valid
      end
    end
    

    【讨论】:

    • 所以这个场景没有任何 rspec 匹配器。哦,好吧。
    【解决方案2】:

    如果你有一个用户 has_many books 关系。 用户被设置为用户对象

    it { user.books.count.should be >= 1 }
    

    期望在 rspec 中

    it { expect(user.books.count).to be >= 1 }
    

    【讨论】:

      猜你喜欢
      • 2011-08-21
      • 2015-10-24
      • 1970-01-01
      • 2021-01-31
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多