ruby-on-rails - RSpec的should_receive和should_not_receive都通过了异常传递

标签 ruby-on-rails rspec

我有一个非常奇怪的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)时,它也通过了,有什么见解?

最佳答案

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

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

关于ruby-on-rails - RSpec的should_receive和should_not_receive都通过了异常传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11319975/

相关文章:

rspec-spies 检查 stub 方法和方法 spy 的调用参数

ruby-on-rails - Rails 3 迁移

ruby-on-rails - Rspec/Capybara - 将 should 更改为 expect

ruby-on-rails - 在 Mac OSX 上的 Apache 上部署 Rails - 403 禁止错误

ruby-on-rails - 如何让 VSCode 在 'end' 后自动插入 'do'

ruby-on-rails-3 - 使用 capybara 和rails3进行Rspec View 测试

ruby-on-rails - 使用 RSpec for Redis with Rails 编写测试

ruby-on-rails-3 - 如何在 rails 3 中使用 Facebooker2 对 valid_session 进行 rspec ?

javascript - 将使用 D3js 创建的 SVG 转换为 PNG

html - Ruby On Rails | format.html/json 是做什么用的?