У меня есть тестовый случай:EasyMock называет реальный метод
TestClient
@RunWith(EasyMockRunner.class)
public class TestClient extends EasyMockSupport {
@TestSubject
private final IClient client = new Client();
@Mock
private HttpClient httpClient;
@Mock
private HttpUriRequest request;
@Mock
private HttpResponse response;
@Test
public void testExecute() throws ClientProtocolException, IOException {
expect(httpClient.execute(request)).andReturn(response);
replayAll();
httpClient.execute(request);
client.execute(request);
verifyAll();
}
}
Client
public class Client implements IClient {
private final HttpClient httpClient;
public Client() {
httpClient = createDefaultClient();
}
private HttpClient createDefaultClient() {
return HttpClientBuilder.create()
.build();
}
@Override
public HttpResponse execute(final HttpUriRequest request)
throws IOException {
return httpClient.execute(request);
}
}
Когда я запускаю его я получаю эту ошибку:
Unexpected method call HttpUriRequest.getURI()
Обычно созданный не будет вызывать этот метод.
Почему я получаю эту ошибку? Почему это требует от меня определения результата для метода getURI
?
. Подчеркнутый «httpClient» будет инъецирован EasyMock (поэтому я использую аннотацию «TestSubject»). Я согласен, что это не видно, если мы не знаем рамки. – Hunsu
@ user230137, пожалуйста, укажите ваш код «Клиент», чтобы мы могли видеть, что он делает. Если вы вызываете 'новый HttpClient()' в любом месте 'Client', который будет использоваться, даже если EasyMock вводит. – dimo414
Я добавил код клиента. При удалении финала он работает, но, возможно, есть решение. – Hunsu