规范validate_uniqueness_of测试作用域有条件

时间:2015-07-17 14:53:44

标签: ruby-on-rails ruby-on-rails-4 testing model rspec3

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

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.') }

问题是我不知道如何将除非条件纳入测试?

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为你不能在一行中测试它,但这就是我要做的事情:

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