![](/img/trans.png)
[英]Spring Boot 1.4 - TestRestTemplate Unsatisfied dependency exception
[英]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/7240和https://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.