创建 HttpServletRequest 和 HttpServletResponse 消息而不是模拟

Create the HttpServletRequest and HttpServletResponse message instead of mock

我正在为过滤器编写单元测试以记录请求和响应消息。我们可以创建 HttpServletRequest 和 HttpServletResponse 消息而不是 mock 以作为输入发送到 doFilter() 方法。

当然可以,只需实现接口即可。但是,这些都是大型接口,因此需要维护大量代码而不是模拟。

如果您不使用 mock 的原因只是对 mock 的厌恶(很好!)请注意,手动实现 "mock" 对象与让框架为您完成这件事之间确实没有区别;在这两种情况下,您为代码提供的内容与您最终使用的 Web 框架不同。

您编写的代码可能通过集成测试进行了更好的测试 - 启动一个真正的 Web 服务器作为测试工具的一部分并生成真正的 HTTP 请求。

如果您试图通过手动实现接口来解决模拟为您创建的问题,这里有一个自定义 HttpServletRequest 的示例,作为实现的扩展实现使用 Jetty 发货:

https://github.com/neo4j/neo4j/blob/3.2/community/server/src/main/java/org/neo4j/server/rest/web/InternalJettyServletRequest.java