![](/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.