使用 Spring Boot 3.2.2 和 Apache Http Client 5 的 LogbookHttpRequestInterceptor 中出现 UnsupportedOperationException(如何修复测试?)

问题描述 投票:0回答:1

我升级了Spring Boot(之前是3.1.9,变成了3.2.2) 同时,spring-web版本增加(原来是6.0.17,变成了6.1.3) 之后,测试会出现错误 测试

此测试调用方法“customize”: 定制

哪里 变量 MdcService - 我们编写了一个接口“MdcService”,它定义了 MdcContext 的填充

测试抛出错误(下面给出了部分堆栈跟踪): 堆栈跟踪

如果在restTemplate测试中替换为restClient并调用restClient,则测试将以相同的错误结束 (valrestClient = RestClient.builder(restTemplate).build())

使用版本: 日志:3.5.0 春季启动:3.2.2 弹簧网:6.1.3

我找到了这些错误的解释:https://github.com/zalando/logbook/issues/1693 这是因为 HttpComponentsClientHttpRequest 在 Spring Framework 6.1 中被重新设计了。

还有一个链接(https://github.com/zalando/logbook/pull/1701)并说: 使用 writeTo() 在 httpclient5 中缓冲 HttpEntity 使用 HttpEntity.writeTo() 而不是依赖 EntityUtils.toByteArray() 来复制 HttpEntity 的 OutputStream。

因此,为了测试,需要将 EntityUtils.toByteArray() 替换为 HttpEntity.writeTo() 但是,如果 EntityUtils.toByteArray () 位于堆栈跟踪深处,该如何执行此操作 如何修复测试?

spring-boot spring-mvc logbook
1个回答
0
投票

我通过更换日志库的版本解决了这个问题(原来是:3.5.0,现在变成了:3.8.0)

© www.soinside.com 2019 - 2024. All rights reserved.