71

私のコードでは、Shouldaマッチャーを使用して次の検証を行いました。これは正常に機能します。

it { should validate_presence_of(:name) }

私のモデルでは、検証に条件を追加しました。

validates_presence_of :name, :if => eligible?

それを検証に反映させることは可能ですか?

shoulda matchersのドキュメントを調べてみましたが、解決策を見つけることができませんでした。

どうもありがとう!

4

1 に答える 1

145

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
于 2012-12-11T02:48:18.650 に答える