gpt4 book ai didi

java - 在java中的测试类中没有得到响应

转载 作者:行者123 更新时间:2023-11-30 10:16:30 25 4
gpt4 key购买 nike

我正在使用 mockito 为 servlet 编写测试用例。

在 servlet 中响应是使用 servletoutputstream 设置的。

我发送请求,servlet 工作正常,也在控制台中提供输出,但在测试类中我没有上课。下面是设置响应的代码:

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());

谁能建议我如何阅读测试课上的回复???提前致谢。

最佳答案

看来您的方向是正确的。

您可以使用 Mockito 的 ArgumentCaptor 来捕获传递给模拟的参数并“捕获”值。 Documentation here

    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);

关于java - 在java中的测试类中没有得到响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50040127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com