Не получить ответ в тестовом классе в Java - PullRequest
0 голосов
/ 26 апреля 2018

Я пишу контрольный пример для сервлетов, использующих mockito.

В ответе сервлета задается использование servletoutputstream.

Я отправляю запрос, сервлет работает нормально и выдает вывод в консоли, но в тестовом классе я не получаю класс. ниже приведен код для настройки ответа:

protected void commitResponseBuffer(String buffer, ServletResponse response) throws IOException 
{
    response.setContentType("text/plain");
    System.out.println("Uncompressed Response Buffer : Size = " + buffer.length());
    // write to ZipOutputStream
    ByteArrayOutputStream bos = new ByteArrayOutputStream ();
    ZipOutputStream out = new ZipOutputStream(bos);
    out.putNextEntry(new ZipEntry("response.txt"));
    out.write(buffer.getBytes("UTF-8"));
    //out.flush();
    out.closeEntry();
    out.close ();
    bos.close();
    // encode to Base64 string
    String b64String = Base64.encodeBase64String(bos.toByteArray());
    // set the response
    ServletOutputStream servletOut = response.getOutputStream();
    response.setContentLength(b64String.length());
    System.out.println("Compressed Response Buffer : Size = " + b64String.length());
    servletOut.print(b64String);
    System.out.println(b64String);
    servletOut.close();
}

и в тестовом классе

    when(response.getOutputStream()).thenReturn(servletOut);
    new xlCollaborationService().service(request, response);        
    System.out.println("Response Buffer in mock :"+response.getContentType());

Может кто-нибудь предложить мне, как прочитать ответ в тестовом классе ??? Заранее спасибо.

1 Ответ

0 голосов
/ 26 апреля 2018

Кажется, вы на правильном пути.

Вы можете использовать ArgumentCaptor от Mockito для захвата аргументов, передаваемых в макет, и «захвата» значения. Документация здесь

    ServletResponse response = mock(ServletResponse.class);
    ServletOutputStream servletOut = mock(ServletOutputStream.class);
    when(response.getOutputStream()).thenReturn(servletOut);

    new xlCollaborationService().service(request, response);

    // Capture argument
    ArgumentCaptor<String> bufferCaptor = ArgumentCaptor.forClass(String.class);
    verify(servletOut).print(bufferCaptor.capture());

    String responseBody = bufferCaptor.getValue();
    System.out.println(responseBody);
...