2017-01-11 16 views
1

Я пишу unit test случаи, используя mocking концепцию, я mocking RestClient class исходный код:как построить com.netflix.client.http.httpresponse объект

final HttpResponse response = restClient.executeWithLoadBalancer(request); 

Тест класс фиктивный код в Spock:

restClient.executeWithLoadBalancer(_ as HttpRequest) >> httpResponse 

здесь мне нужно построить и установить httpResponse. Как построить HttpResponse

ответ

2

Как 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 

на стороне записки, издеваться ClientResponse вам нужно objenesis в вашем пути к классам.