亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

單元測試中的 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條經驗 獲得超6個贊

作為第一次下注,您可以致電:

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

“查找”部分實際上使用 ServiceLoader 機制,并且正如文檔所述,這被認為可能是昂貴的


查看完整回答
反對 回復 2023-07-28
  • 2 回答
  • 0 關注
  • 260 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號