Spec validate_uniqueness_of 测试范围有条件

Spec validate_uniqueness_of test scoped with conditional

我有一个模型,我在其中有条件地验证字段。它看起来像这样:

validates :case_id,
        uniqueness: {
                      scope: :user_id,
                      message: 'Message'
                    },
        unless: Proc.new { |c| c.user_id.nil? }

到目前为止,我对其进行的测试如下所示:

it { should validate_uniqueness_of(:case_id)
              .scoped_to(:user_id)
              .with_message('Message.') }

问题是我不知道如何将 unless 条件合并到测试中?

有什么想法吗?

我不认为你可以在一行中测试它,但我会这样做:

  context 'when user_id is nil' do
    before { subject.stub(:user_id) { nil } }
    it { expect(subject).to_not validate_uniqueness_of(:case_id) }
  end