Shoulda / RSpec匹配器 – 条件validation

在我的代码中,我有以下validation与Shoulda matchers,它工作正常:

it { should validate_presence_of(:name) } 

在我的模型中,我已经添加了条件来validation:

 validates_presence_of :name, :if => eligible? 

有没有可能在validation中反映出来?

我已经尝试查看应用程序匹配器的文档 ,但一直无法find解决scheme。

非常感谢!

看起来shoulda_matchers没有这样做,但很容易写出它自己::

  context "if eligible" do before { allow(subject).to receive(:eligible?).and_return(true) } it { should validate_presence_of(:name) } end context "if ineligible" do before { allow(subject).to receive(:eligible?).and_return(false) } it { should_not validate_presence_of(:name) } end