使用Netty在Resteasy测试中注入上下文数据

汤玛士

我正在尝试使用Resteasy Docs中所述的嵌入式Netty实例使用Resteasy测试资源

注入路径参数和查询参数的工作原理就像一个魅力,但后来我试图测试资源内喷射HttpServletRequest,并HttpServletResponse从这样的背景下:

@GET
@Path("/")
public void example(@Context HttpServletResponse response, 
                    @Context HttpServletRequest request) { ... }

ResteasyHttpServletRequest在上下文中找不到,并引发以下异常:

5105 [r #1] DEB o.j.resteasy.core.SynchronousDispatcher  - PathInfo: /auth
5201 [r #1] ERR c.s.f.v.s.r.e.ApplicationExceptionMapper - Unhandled application exception: Unable to find contextual data of type: javax.servlet.http.HttpServletRequest
org.jboss.resteasy.spi.LoggableFailure: Unable to find contextual data of type: javax.servlet.http.HttpServletRequest

我尝试按照RESTEasy Mock与Exception Mapper与Context中的建议,将模拟的请求和响应版本放入上下文中,但由于上下文数据是ThreadLocal,Netty为每个请求生成了一个新线程,因此它也不起作用。

关于如何解决这个问题的任何想法?

汤玛士

我只是在另一个项目上再次受到打击,决定再次进行调查。

问题是在Netty的模拟请求中,没有HttpServletRequest可用的请求如果您查看NettyJaxrsServer类和相关类的源代码,Reasteasy将其自己的抽象用于未实现的http请求HttpServletRequest

如果更改实现以使用这些抽象,则可以访问资源中的请求和响应。

import org.jboss.resteasy.spi.HttpRequest;
import org.jboss.resteasy.spi.HttpResponse;

@GET
@Path("/")
public void example(@Context HttpResponse response, 
                    @Context HttpRequest request) { ... }

这不是完美的,因为它使我的资源依赖于Resteasy接口,但是我现在决定使用它来支持多部分数据的模拟测试。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从测试中注入上下文

来自分类Dev

Light在MVC中注入数据库上下文

来自分类Dev

如何在graphql-dotnet中注入数据库上下文

来自分类Dev

如何在Spring上下文中注入模拟

来自分类Dev

使用Dagger 2在存储库中注入应用程序上下文

来自分类Dev

Specflow上下文注入

来自分类Dev

使用接口将数据库上下文注入到类中

来自分类Dev

请求范围的上下文字段注入到RESTEasy单例中

来自分类Dev

使用Hilt注入上下文:此字段泄漏上下文对象

来自分类Dev

使用Mockito测试使用上下文的函数

来自分类Dev

F#机盖-如何使用“上下文”测试?

来自分类Dev

如何测试使用上下文参数的Flask API

来自分类Dev

使用上下文测试组件并反应挂钩

来自分类Dev

如何在测试中使用上下文?

来自分类Dev

如何在测试上下文中使用 LocalizationUtility

来自分类Dev

Django:如何使用 RequestFactory 测试视图上下文?

来自分类Dev

如何在不违反依赖注入的情况下为单个数据库使用多个上下文

来自分类Dev

通过@Resource注入TimerService时,“在JNDI上下文中找不到注入数据”

来自分类Dev

ControlTemplates的数据上下文

来自分类Dev

数据上下文冲突

来自分类Dev

数据上下文冲突

来自分类Dev

上下文注入和BeforeFeature挂钩

来自分类Dev

IWebDriver的Specflow上下文注入失败

来自分类Dev

上下文未正确注入

来自分类Dev

上下文注入和BeforeFeature挂钩

来自分类Dev

IWebDriver的Specflow上下文注入失败

来自分类Dev

带测试容器和jOOQ的Spring Boot不会注入DSL上下文

来自分类Dev

上下文菜单MenuItem单击“数据上下文”?

来自分类Dev

在LINQPad中使用数据上下文调用静态方法

Related 相关文章

热门标签

归档