我遇到了一个非常奇怪的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)时,它也通过了,有什么见解吗?
发布于 2012-07-14 23:29:59
由于rspec 2.11暴露了我的一个测试来展示这种“异常”,所以我决定在github上提出这个问题。您可以在https://github.com/rspec/rspec-mocks/issues/164上关注该讨论
摘要:未定义any_instance.should_not_receive,请避免
发布于 2015-02-14 15:07:07
您可以尝试将.should_receive与.never结合使用
ErrorMessage.should_receive(:add).neverhttps://stackoverflow.com/questions/11319975
复制相似问题