0

私はまだ、そのようなit { should have(1).error_on(:base) }ものの背後にある魔法とは何か、そして特定のShouldaマッチャーとは何かについてかなり混乱しています。

エラーメッセージ「xxx」が含まれていることを確認したいのです:baseが、どうすればよいですか?

it "should contain error message 'xxx'" do
  contact.valid?
  contact.errors[:base].should include('xxx')
end

これは「進むべき道」ですか、それとももっと良い方法がありますか?ありがとう。

4

1 に答える 1

5

そうです、見栄えがします。インラインrspecテストはサブジェクトを使用しています。次のようにテストを書き直すことができます。

describe 'my method' do
  before { contact.valid? }

  context 'contact is not valid' do
    subject { contact.errors[:base] }
    it { should include 'xxx' }
  end
end

この件名でshouldメソッドが呼び出されます。時々読みやすくなります。そして、あなたは自明であるスペックの説明を書く必要はありません;-)

于 2012-07-12T17:33:08.650 に答える