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
我有一个模型,我在其中有条件地验证字段。它看起来像这样:
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