JerseyTest 框架:在集成测试中测试我的 proxyservlet

问题描述

我的代码中有一个 ProxyServlet (org.mitre.dsmiley.httpproxy),它执行一些操作并将某些以 */xyz 结尾的 url 转发到不同的应用程序。我有覆盖我的应用程序的集成测试(使用 JerseyTest 框架),并希望使集成测试通过代理 servlet。

目前我的测试用例部署配置如下:

ServletDeploymentContext.forServlet(new ServletContainer(internalConfigureResourceConfig(resourceConfig))).build()

现在,为了测试我的代理 servlet,如果我更改如下配置,

ServletDeploymentContext.forServlet(MyProxyServlet.class).build()

我无法在上面添加 url-pattern servlet-mapping,并且正在为所有 url 调用代理 servlet。有人能告诉我如何为

动态添加 url-mapping 配置吗?
ServletDeploymentContext.forServlet

我已经检查了所有方法但无法这样做

解决方法

我明白我哪里出错了。当我添加以下语句时, ServletDeploymentContext.forServlet(MyProxyServlet.class).build() 我添加 MyProxyServlet 作为唯一的“默认”servlet,因此即使我添加 servletPath() 作为 url-mapping 它也不起作用,因为这是唯一存在的 servlet。因此,即使不满足映射标准,每个请求也会发送到 servlet。 当我使用 servletPath 作为 /* 添加另一个 servlet 时,所有其他请求都转到其他 servlet 并且所需的请求到达我的 MyProxyServlet