为了账号安全,请及时绑定邮箱和手机立即绑定

单元测试中的 ObjectMapper 实例

单元测试中的 ObjectMapper 实例

收到一只叮咚 2023-07-28 15:19:05
在我的 SpringBoot 应用程序中,我的 ObjectMapper 对象是自动装配的,并包含按预期注册的模块我的代码:并测试:现在在单元测试部分(使用 MockitoJUnitRunner)我无法使用 ObjectMapper 实例,注册的模块为空:即使我添加 mapper.findAndRegisterModules() ,注册的模块也为空,并且我的日期反序列化失败。为什么代码和单元测试中的行为不一样?如何在我的单元测试中注册相同的模块?
查看完整描述

2 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

使用实用程序类将模块注册到ObjectMapper实例。


public static ObjectMapper newObjectMapper() {

    final ObjectMapper objectMapper = new ObjectMapper();

    return configureObjectMapper(objectMapper);

}

然后在实际代码和测试用例中使用此方法以避免不同的行为。ObjectMapper这样,无论是测试代码还是实际代码,您都可以在应用程序的任何位置保持一致。


public static ObjectMapper configureObjectMapper(final ObjectMapper objectMapper) {

    return objectMapper

            .registerModule(new LocaleModule())

            .registerModule(new DateTimeDeserializationModule())

            .registerModule(new DateTimeSerializationModule())

            .registerModule(new JavaMoneyModule())

            .setSerializationInclusion(JsonInclude.Include.NON_NULL);

}


查看完整回答
反对 回复 2023-07-28
?
梦里花落0921

TA贡献1772条经验 获得超5个赞

作为第一次下注,您可以致电:

   mapper.registerModule(new ParameterNamesModule())
         .registerModule(new Jdk8Module())
         .registerModule(new JavaTimeModule());

“查找”部分实际上使用 ServiceLoader 机制,并且正如文档所述,这被认为可能是昂贵的


查看完整回答
反对 回复 2023-07-28
  • 2 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信