0

明示的な主語を使用するかどうかに応じて、動作が異なるように見える簡単なテストがあります。

context "successful validation" do
  subject(:invitation) {invitations(:emmet_invite)}
  after do
    invitation.send_voucher
  end
  it "calls hotel_booked?" do
    invitation.should_receive(:hotel_booked?).and_return(true) #works
  end

  it {should_receive(:hotel_booked?).and_return(true)} #fails
end

ここで何が問題なのですか?

4

2 に答える 2

1

rspec-mocks でこの github の問題を参照してください: https://github.com/rspec/rspec-mocks/issues/148

見積もり:

暗黙の主語は、1 行の期待をサポートするために追加されましたが、モックの期待で使用することを意図したものではなかったと思います。模擬的な期待が意味をなすためには、設定後に例にコードが含まれている必要があるため、1 つのライナーに使用するのは実際には意味がありません。

should_receiveしたがって、基本的に、暗黙の主語では使用できません。

于 2012-10-04T22:39:42.377 に答える
0

subject暗黙の主語を取得するために使用できます。

it { subject.should_receive(:hotel_booked?).and_return(true) }

ただし、これは明示的な例ほど読みやすくはありません。

于 2012-10-05T01:26:57.307 に答える