添加时
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请求。我用curl检查了一下。另一方面,TestRestTemplate.getForObject(...)
仍然有效。使用正常的RestTemplate
进行POST和PUT也可以。
我尝试配置TestRestTemplate(正确的解决方案,错误的实现 - >查看我的回答)
@TestConfiguration
static class TestConfig {
@豆
RestTemplateBuilder restTemplateBuilder(){
RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder()
restTemplateBuilder.detectRequestFactory(假)
restTemplateBuilder.requestFactory(new SimpleClientHttpRequestFactory())
返回restTemplateBuilder
}
}
没有效果。我也尝试使用Netty4ClientHttpRequestFactory
,这也不起作用。我尝试使用HttpMessageConverter
配置GsonHttpMessageConverter
,例如......无效。
答案 0 :(得分:0)
$headers = 'From: blux@g.com' . "\r\n" .
'Reply-To: blux@g.com' . "\r\n" .
无法正常工作,因为Spring Boot会在类路径中找到Netty时将其配置为使用TestRestTemplate
而Netty4ClientHttpRequestFactory
似乎不起作用。
参见https://github.com/spring-projects/spring-boot/issues/7240 和https://jira.spring.io/browse/SPR-14860
要制作Netty4ClientHttpRequestFactory
和TestRestTemplate.postForObject(...)
,我必须提供TestRestTemplate.put(...)
RestTemplateBuilder
并将其配置为使用@Bean
。问题中的SimpleClientHttpRequestFactory
RestTemplateBuilder
有一些错误。它应该看起来像这样
@Bean