在我的一个测试中,我需要完全禁用对给定类的所有调用,因此我执行了以下操作:
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
什么是不会导致这些警告的替代方案?
PS。我刚刚意识到我所做的是完全错误的,因为除非我在执行测试后恢复类,否则它实际上会替换所有测试的全局上下文中的存根。
答案 0 :(得分:3)
您可以使用https://www.relishapp.com/rspec/rspec-mocks/v/2-11/docs/stubbing-constants中描述的stub_const
来避免这些警告,如下所示:
stub_const("ApiClass", double("api_class").as_null_object)