You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级reactor-netty-http至1.0.24遇VerifyError,求测试代码修改方案

reactor-netty-http 升级到1.0.24后 VerifyError 问题解决

问题描述

将reactor-netty-http版本从1.0.19升级到1.0.24时,出现以下错误:

java.lang.VerifyError: reactor.netty.http.client.HttpClientConfig overrides final method connectionProvider

对应的测试代码如下:

@Mock
private WebClient webClient;

@Before
public void setup() {
    webClient = WebClient.builder().baseUrl("baseurl").build(); // 报错行
}

问题原因

reactor-netty-http 1.0.24版本中,HttpClientConfig.connectionProvider()方法被修改为final方法。你同时使用@Mock注解和WebClient.builder()创建真实实例,导致Mock框架(如Mockito)生成动态代理时,尝试覆盖这个final方法,触发了VerifyError。

解决方案

方案1:移除Mock注解,使用真实WebClient实例

如果测试需要实际执行WebClient的调用逻辑,直接去掉@Mock注解,保留实例创建逻辑即可:

private WebClient webClient;

@Before
public void setup() {
    webClient = WebClient.builder()
            .baseUrl("baseurl")
            .build();
}

方案2:完全Mock WebClient(适合仅验证调用行为的测试)

如果测试只需要验证WebClient的调用行为,无需实际执行请求,应Mock WebClient的方法链,而非创建真实实例:

@Mock
private WebClient webClient;
@Mock
private WebClient.RequestBodyUriSpec requestBodyUriSpec;
@Mock
private WebClient.RequestHeadersSpec<?> requestHeadersSpec;
@Mock
private WebClient.ResponseSpec responseSpec;

@Before
public void setup() {
    MockitoAnnotations.openMocks(this);
    
    // 根据测试需求Stub WebClient的调用链
    when(webClient.get()).thenReturn(requestBodyUriSpec);
    when(requestBodyUriSpec.uri(anyString())).thenReturn(requestHeadersSpec);
    when(requestHeadersSpec.retrieve()).thenReturn(responseSpec);
}

内容的提问来源于stack exchange,提问作者vaishali jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 04:50:34