我正在为过滤器编写一个单元测试来记录请求和响应消息。我们可以创建 HttpServletRequest 和 HttpServletResponse 消息而不是模拟消息作为 doFilter() 方法的输入发送吗?
最佳答案
当然,只需实现接口(interface)即可。然而,这些都是大型接口(interface),因此需要维护大量代码而不是模拟。
如果你不使用模拟的原因只是对模拟的厌恶(很好!)请注意,手动实现“模拟”对象和让框架为你做这件事实际上没有区别;在这两种情况下,您为代码提供的内容都与您最终使用的 Web 框架将使用的内容不同。
您正在编写的代码也许可以通过集成测试得到更好的测试 - 启动真正的 Web 服务器作为测试工具的一部分并生成真正的 HTTP 请求。
如果您尝试通过手动实现接口(interface)来解决模拟为您创建的问题,下面是一个自定义 HttpServletRequest 的示例,它作为 Jetty 附带的实现的扩展实现:
关于java - 创建 HttpServletRequest 和 HttpServletResponse 消息而不是模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43328707/