簡體   English   中英

將Netty添加為依賴項時,Spring TestRestTemplate POST和PUT無法正常工作

[英]Spring TestRestTemplate POST and PUT not working when adding Netty as a dependency

添加時

    compile 'io.netty:netty-all:4.1.6.Final'

作為對Spring Boot項目的依賴,我所有使用TestRestTemplate.postForObject(...)TestRestTemplate.put(...)單元測試都開始失敗。 似乎未發送請求正文,因為我收到以下錯誤

Failed to read HTTP message:... HttpMessageNotReadableException: Required request body is missing

該服務仍在工作,並接受POST和PUT請求。 我用卷發檢查了一下。 TestRestTemplate.getForObject(...)仍在工作。 將普通的RestTemplate用於POST和PUT也可以使用。

我試圖配置TestRestTemplate( 正確的解決方案,錯誤的實現->參見我的答案

@TestConfiguration靜態類TestConfig {@Bean RestTemplateBuilder restTemplateBuilder(){RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder()restTemplateBuilder.detectRequestFactory(false)restTemplateBuilder.requestFactory(new SimpleClientHttpRequestFactory())return restTemplateBuilder}}

沒有任何效果。 我也嘗試使用也Netty4ClientHttpRequestFactory 例如,我嘗試使用GsonHttpMessageConverter配置HttpMessageConverter ...無效。

TestRestTemplate不起作用,因為當Spring Boot在類路徑上找到Netty並且Netty4ClientHttpRequestFactory似乎Netty4ClientHttpRequestFactory時,Spring Boot會將其配置為使用Netty4ClientHttpRequestFactory

參見https://github.com/spring-projects/spring-boot/issues/7240https://jira.spring.io/browse/SPR-14860

為了制作TestRestTemplate.postForObject(...)TestRestTemplate.put(...)我必須提供RestTemplateBuilder @Bean並將其配置為使用SimpleClientHttpRequestFactory 問題中的RestTemplateBuilder @Bean有一些錯誤。 應該看起來像這樣

@TestConfiguration
static class TestConfig {
    @Bean
    public RestTemplateBuilder restTemplateBuilder() {
        return new RestTemplateBuilder().detectRequestFactory(false).requestFactory(SimpleClientHttpRequestFactory.class);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM