Ruby on rails 存根类上调用的所有方法

Ruby on rails 存根类上调用的所有方法,ruby-on-rails,rspec,mocking,double,Ruby On Rails,Rspec,Mocking,Double,在我的一个测试中,我需要完全禁用对给定类的所有调用,因此我执行了以下操作: ApiClass = double("api_class").as_null_object 它工作正常,但我现在收到以下警告: ~/my_project/spec/models/mymodel_spec.rb:141:warning: already initialized constant ApiClass ~/my_project/app/models/api_class.rb:2:warning: previ

在我的一个测试中,我需要完全禁用对给定类的所有调用,因此我执行了以下操作:

  ApiClass = double("api_class").as_null_object
它工作正常,但我现在收到以下警告:

~/my_project/spec/models/mymodel_spec.rb:141:warning: already initialized constant ApiClass
~/my_project/app/models/api_class.rb:2:warning: previous definition of ApiClass was here
有什么替代方案不会导致这些警告


另外,我刚刚意识到我所做的是完全错误的,因为它实际上在全局上下文中为所有测试用存根替换类,除非我在执行测试后还原该类。

您可以使用中描述的
存根常量来避免这些警告,如下所示:

stub_const("ApiClass", double("api_class").as_null_object)

这个怎么样?嗯,用这个得到了“未定义的方法'class_double'”。
class_double
只在3.0.0.beta1(从rspec fire移动)中添加到rspec中,对,我的版本是2.14.5