java - 从 println 读取模拟的 ServletOutputStream

标签 java unit-testing junit mocking mockito

我有一个 HttpServlet,我正在尝试为其编写测试并模拟了 ServletOutputStream:ServletOutputStream outputStream = mock(ServletOutputStream.class);。我需要在使用 println 的 servlet 中获取写入 outputStream 的内容。即,在 servlet 中,我有如下代码:

ServletOutputStream out = response.getOutpuStream();
out.println("foo");

所以,我想测试“foo”。我试过说 when(outputStream.println()).then...,但这不起作用,因为 println() 是一个 void 方法。我还调查了 HttpServletResponseWrappers,但无法在那里找到解决方案。想法?我正在使用 Mockito。

最佳答案

如果您想查看“foo”是否传递给了您可以执行的 println 方法:

verify(outputStream).println(eq("foo"));

关于java - 从 println 读取模拟的 ServletOutputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8810524/

相关文章:

java - 文件中的 JUnit 测试

android - JUnit 本地测试 - 'Unresolved reference: test'

java - 如何在 Magnolia CMS 中将 GeoLite2-Country.mmdb(国家/地区 IP 数据库)更新到最新版本?

javascript - 您如何模拟作为函数的 Angular 服务?

php - 基于图形/浏览器的 PHP 单元测试套件?

java - 使用 wiremock 时连接被拒绝

java - 使用 javax.xml.soap.SOAPConnection 设置套接字读取超时

java - 如何一致地访问文件?

java - 使用 Jackson Serialize,如何序列化双值 null 并且在 0.0 时不返回

javascript - 模拟在同一模块中导出和调用的模块函数?