rspec版本2.14的未定义方法`rspec_reset'

时间:2013-08-14 11:41:25

标签: ruby-on-rails rspec mocking

我正在尝试使用rspec版本2.14执行测试用例,其中我收到了以下错误

undefined method `rspec_reset' for

我正在尝试在类上使用rspec_reset。相同的测试用例正在使用rspec 2.13.1。那么在2.13之后rspec_reset方法可能不可用吗?

2 个答案:

答案 0 :(得分:13)

RSpec 2.14.x中不存在reset方法。相反,它是在rspec-mocks项目的 spec_helper.rb 文件中定义的辅助方法。

module VerifyAndResetHelpers
  def verify(object)
    RSpec::Mocks.proxy_for(object).verify
  end

  def reset(object)
    RSpec::Mocks.proxy_for(object).reset
  end
end

您可以看到此方法将重置操作委托给基础代理,而不是将其添加到相关对象的类定义中。

答案 1 :(得分:5)

是的,在2.14中,rspec_reset不再像之前那样在所有对象上可用,如https://github.com/rspec/rspec-mocks/pull/250中所述。

虽然我找不到任何关于它的文档,但现在似乎有一个RSpec类方法reset,它将一个对象作为一个参数,并将有效地“撤消”任何具有的RSpec操作已完成该目标。

https://github.com/rspec/rspec-mocks/blob/cee433c89125a3984df33c87eb61985613adce9b/spec/rspec/mocks/mock_spec.rb处有一个RSpec“示例”仍在示例说明中使用rspec_reset,但现在使用上述reset方法进行重置。在该示例的早期版本中,重置是使用rspec_reset完成的。