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

标签 java unit-testing servlets servlet-filters

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

最佳答案

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

如果你不使用模拟的原因只是对模拟的厌恶(很好!)请注意,手动实现“模拟”对象和让框架为你做这件事实际上没有区别;在这两种情况下,您为代码提供的内容都与您最终使用的 Web 框架将使用的内容不同。

您正在编写的代码也许可以通过集成测试得到更好的测试 - 启动真正的 Web 服务器作为测试工具的一部分并生成真正的 HTTP 请求。

如果您尝试通过手动实现接口(interface)来解决模拟为您创建的问题,下面是一个自定义 HttpServletRequest 的示例,它作为 Jetty 附带的实现的扩展实现:

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

关于java - 创建 HttpServletRequest 和 HttpServletResponse 消息而不是模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43328707/

相关文章:

java - 如何组合 JTextField 和 JRadioButton?

java - 有多少人仍在使用 JRE 1.5 或更早版本?

javascript - 如何在 ember.js 中执行单元测试?

java - 使用 Hibernate 时集成测试 native SQL 查询

jsp - 如何将 Unicode 字符作为 JSP/Servlet request.getParameter 传递?

java - 什么是 JSP 上下文?

java - 年轻一代的垃圾收集器

ios - TyphoonPatcher 用于在单元测试中进行模拟

java - HttpServlet 的 doPost() 中的请求阻塞

java - 分配 AsyncTask 返回的值