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
我想模拟一个服务,当用 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