9

本当に奇妙なrspecケースのシナリオがありました。関数が例外を正しく処理するかどうかをテストしようとしました。そして、以下は私のコードです:

User.rb で:

def welcome_user
      begin
        send_welcome_mail(self)
      rescue Exception => exception
         ErrorMessage.add(exception, user_id: self.id)
      end
    end
end

user_spec.rb で

it "adds to error message if an exception is thrown" do
  mock_user = User.new
  mock_user.stub(:send_welcome_mail).and_raise(Exception)
  ErrorMessage.should_receive(:add)
  mock_user.welcome_user
end

テストに合格しましたが、に変更ErrorMessage.should_receive(:add)するとErrorMessage.should_not_receive(:add)、それも合格しました。洞察はありますか?

4

2 に答える 2

5

代わりに使用できるのは、次.should_receiveの組み合わせ.neverです。

ErrorMessage.should_receive(:add).never
于 2015-02-14T07:07:07.450 に答える
5

rspec 2.11 で、私のテストの 1 つがこのような「異常」を示すことが明らかになったので、github で問題を提起することにしました。https://github.com/rspec/rspec-mocks/issues/164での議論に従うことができます

要約: any_instance.should_not_receive は未定義です。回避してください

于 2012-07-14T15:29:59.390 に答える