RSpec mock服务及对应方法

RSpec mock service and corresponding method

我想模拟一个服务,当用 get_auth_key.api_response_code 调用时 return 是整数 0

这是我目前所拥有的:

  before(:each) do
    PolicyObjects::BpointRequestPolicy.any_instance.stub(:get_auth_key).and_return(OpenStruct.new(api_response_code: 0))
  end

我想避免在测试中为此创建一个 class,因为我认为这太过分了。在代码库的某处,response = PolicyObjects::BpointRequestPolicy.new(...) 被调用然后进行比较:if response.api_response_code == 0。我希望它 return 0 在我的测试中命中条件。

执行此操作的最佳做​​法或最简单的方法是什么?

这是双倍或更好的用例 instance_double 如果你知道你正在模拟的 class:

let(:api_resonse) { instance_double("SomeResponseClass", api_response_code: 0) }  

before(:each) do 
  PolicyObjects::BpointRequestPolicy.any_instance.stub(:get_auth_key).and_return(api_response)
end