我正在编写unit test
案例,使用mocking
概念,我mocking RestClient class
原始代码:
final HttpResponse response = restClient.executeWithLoadBalancer(request);
Spock
测试类模拟代码:
restClient.executeWithLoadBalancer(_ as HttpRequest) >> httpResponse
在这里,我必须构建和设置httpResponse
.如何构建 HttpResponse
由于 HttpResponse 是一个接口,您无法真正构建或创建它的实例。您可以做的可能是创建实现此接口的类的实例。 例如: HttpClientResponse
您可以构建和设置httpResponse
任何你喜欢的东西如下,
ClientResponse clientResponse = Mock(ClientResponse)
MultivaluedMapImpl sampleHeaders = new MultivaluedMapImpl()
sampleHeaders.add("name", "test")
clientResponse.getHeaders() >> sampleHeaders
HttpResponse httpResponse = new HttpClientResponse(clientResponse,null,null)
restClient.executeWithLoadBalancer(_ as HttpRequest) >> httpResponse
附带说明一下,要模拟客户端响应,您需要类路径中的对象。