1

I am writing unit test cases, using mocking concept, I am mocking RestClient class original code:

final HttpResponse response = restClient.executeWithLoadBalancer(request);

Test class mock code in Spock:

restClient.executeWithLoadBalancer(_ as HttpRequest) >> httpResponse

here I have to build and set httpResponse. How to build HttpResponse

Sat
  • 3,520
  • 9
  • 39
  • 66

1 Answers1

2

As HttpResponse is an interface and you can't really build or create instance of it.what you can able to do is probably create instance of class that implements this interface. for eg: HttpClientResponse

and you can build and set httpResponse anything you like as below,

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

on a side note ,to mock ClientResponse you need the objenesis in your classpath.

Sasi Kathimanda
  • 1,788
  • 3
  • 25
  • 47