7

我正在尝试使用 rspec 2.14 版执行测试用例,但出现以下错误

undefined method `rspec_reset' for

我正在尝试在课堂上使用 rspec_reset。相同的测试用例适用于 rspec 2.13.1。那么有没有可能 rspec_reset 方法在 2.13 之后就不可用了?

4

2 回答 2

15

resetRSpec 2.14.x 中不存在该方法。相反,它是在 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

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

于 2013-10-09T16:07:55.007 回答
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.

于 2013-08-15T16:56:23.230 回答