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

由于 rspec 2.11 暴露了我的一项测试以表现出这种“异常”,我决定在 github 上提出这个问题。您可以关注https://github.com/rspec/rspec-mocks/issues/164的讨论

摘要:any_instance.should_not_receive 未定义,避免

于 2012-07-14T15:29:59.390 回答
5

您可以尝试使用的方法是.should_receive结合.never

ErrorMessage.should_receive(:add).never
于 2015-02-14T07:07:07.450 回答