本文介绍了为什么用WebFlux进行的Spring Boot测试忽略了定制的Jackson模块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!,我正在编写一个使用Spring Boot 2.0.1和WebFlux路由器函数的应用程序(不是基于注释!)。对于我的一些数据对象,我编写了扩展StdSerializer
的定制序列化程序。我在SimpleModule
中注册这些组件,并将该模块公开为一个Bean。,当我运行应用程序时,此设置非常出色。Bean被实例化,REST响应使用正确的序列化程序序列化。,现在我想编写一个测试,以验证路由器功能及其背后的处理程序是否按预期工作。我想嘲笑的是处理程序背后的服务。但是,在测试中,REST响应使用默认序列化程序。,我已经创建了一个复制该问题的小型演示项目。完整代码可在此处找到:http://s000.tinyupload.com/?file_id=82815835861287011625,Gradle配置加载Spring Boot和一些依赖项以支持WebFlux和测试。,该数据对象有两个字段。,自定义序列化程序以与默认序列化程序完全不同的方式呈现数据对象。原始字段名称消失,数据对象的内容被压缩为单个字符串。,序列化程序包装在Jackson模块中并公开为Bean。在运行实际应用时,此Bean被正确拾取并添加到ObjectMapper
。,我还验证了该Bean实际上存在于测试中。因此,我可以排除在加载Bean时缺少在测试期间创建的上下文。,运行应用时的结果:,运行测试时的结果:,我还尝试创建我自己的ObjectMapper实例,但也没有使用。我想知道我是不是错过了一个设置(尽管我确实尝试了很多注释…)或者我是不是撞上了虫子。我在谷歌上搜索了很多,但到目前为止,我找到的解决方案都没有帮助。此外,到目前为止,使用路由器功能的人很少:)。,如有任何帮助,我们将不胜感激!,更新:我也尝试过2.0.2.RELEASE和2.1.0.BUILD-20180509。结果总是相同的。,而不是在测试中手动创建WebTestClient
,您可以利用@AutoConfigureWebTestClient
并按如下方式自动连接它,以便正确考虑您的杰克逊模块:,这篇关于为什么用WebFlux进行的Spring Boot测试忽略了定制的Jackson模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,