在命名空间中存根一个类

时间:2013-04-23 20:03:24

标签: rspec

我有以下控制器规范现在可以正常工作:

# This top part is a hack
module MyModule
  class MyOAuthClient < OAuthClient
    def token_is_valid?(options)
      true
    end
  end 
end

# Here's the actual spec
describe MyModule::OAuthController do
  describe "GET callback" do
    it "works fine when token is valid" do
      post :callback, use_route: :my_module
      expect(response.code).to eq("200")
    end 
  end 
end

我想要做的是用存根替换我的规范中的猴子补丁。我该怎么做?

rspec-mocks docs显示了不在命名空间下的存根类的示例,但似乎您不能将这些示例应用于命名空间类并让它工作。

我已经尝试过某些事情,但我不想用错误的猜测来偏见别人的答案。

1 个答案:

答案 0 :(得分:1)

原来我在any_instance之后:

MyModule::OAuthClient.any_instance.stub(:token_is_valid?) { true }