Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重启不尊重Quarkus中的ObjectMapper配置_Java_Rest Assured_Objectmapper_Quarkus - Fatal编程技术网

Java 重启不尊重Quarkus中的ObjectMapper配置

Java 重启不尊重Quarkus中的ObjectMapper配置,java,rest-assured,objectmapper,quarkus,Java,Rest Assured,Objectmapper,Quarkus,我对Quarkus应用程序中的ObjectMapper配置进行了非常简单的调整,如Quarkus指南所述: @Singleton 公共类ObjectMapperConfig实现ObjectMapperCustomizer{ @凌驾 公共void自定义(ObjectMapper ObjectMapper){ enable(SerializationFeature.WRAP\u ROOT\u值); enable(反序列化功能。展开根值); registerModule(新的JavaTimeModul

我对Quarkus应用程序中的
ObjectMapper
配置进行了非常简单的调整,如Quarkus指南所述:

@Singleton
公共类ObjectMapperConfig实现ObjectMapperCustomizer{
@凌驾
公共void自定义(ObjectMapper ObjectMapper){
enable(SerializationFeature.WRAP\u ROOT\u值);
enable(反序列化功能。展开根值);
registerModule(新的JavaTimeModule());
}
}
我这样做是为了用
@JsonRootName
注释包装/展开我的对象:

@RegisterForReflection
@JsonRootName(“文章”)
公共类CreateArticleRequest{
私有CreateArticleRequest(字符串标题、字符串描述、字符串正文、列表标记列表){
this.title=标题;
this.description=描述;
这个身体=身体;
this.tagList=tagList;
}
私有字符串标题;
私有字符串描述;
私有字符串体;
私有列表标记列表;
... 
}
curl
与我的实际API相对时,这很好,但是每当我在我的一个测试中使用RestAssured时,RestAssured似乎不尊重我的ObjectMapper配置,并且没有像
@JsonRootName
注释所指示的那样包装CreateArticleRequest

@QuarkusTest
公开课考试{
@试验
public void testCreateArticle(){
给定()
.when()
.body(创建文章请求)
.contentType(contentType.JSON)
.log().all()
.post(“/api/articles”)
.然后()
.状态代码(201)
.body(“”),equalTo(“”)
.body(“文章标题”,equalTo(文章标题))
.body(“文章收藏”,equalTo(文章收藏))
.body(“第条主体”,equalTo(第条主体))
.body(“article.favoritesunt”,相等(article\u FAVORITE\u COUNT))
.body(“article.taglist”,equalTo(article_tagu_LIST));
}
}
这将我的请求正文序列化为:

{
“标题”:“如何训练你的龙”,
“描述”:“想知道怎么做吗?”,
“身体”:“非常小心。”,
“标记列表”:[
“龙”,
“培训”
]
}
。。。而不是

{
“第条”:{
“标题”:“如何训练你的龙”,
“描述”:“想知道怎么做吗?”,
“身体”:“非常小心。”,
“标记列表”:[
“龙”,
“培训”
]
}
}
实际上,我可以通过手动配置重启的ObjectMapper来解决这个问题,如下所示:

@QuarkusTest
公开课考试{
@之前
无效设置(){
RestAssured.config=RestAssuredConfig.config().objectMapperConfig(新的objectMapperConfig().jackson2ObjectMapperFactory(
(cls,字符集)->{
ObjectMapper mapper=新建ObjectMapper().findAndRegisterModules();
启用(SerializationFeature.WRAP\u ROOT\u值);
启用(反序列化功能。展开根值);
registerModule(新的JavaTimeModule());
返回映射器;
}
));
}
}
然而,我显然不想这样做!我希望重新设置以获取我的ObjectMapper配置,这样我就不需要保留两种不同的ObjectMapper配置


为什么它没有被捡起来?我遗漏了什么?

所以实际上Quarkus不会自动执行此操作(因为它会干扰本机测试)

但是,您可以使用:

@Inject
ObjectMapper

在测试中设置
RestAssured.config

这是一个很好的特性请求!你能打开一个问题并给我打电话吗(
@geoand
on github)?我已经有了这个工作的原型。只是需要清理一下。一旦我在Github上打开Pull请求,我将发回。添加该功能的PR已打开: