我编写了一个Spring Boot控制器,用于侦听发送到/orders/
的PUT请求。
在我的集成测试中,我注意到TestRestTemplate
没有像我预期的那样对404响应做出反应。这导致了这样的测试:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)
public class OrderControllerTest {
@Autowired
private TestRestTemplate restTemplate;
@Test
public void testValidPut() throws Exception {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<String>("{}", headers);
restTemplate.put("/doesntexist", entity);
}
}
当我希望put
方法抛出异常时,如the documentation中所述:
抛出:
RestClientException - 客户端端HTTP错误
我已经确认,如果我正常运行我的应用程序,在尝试PUT到相同的URL时会得到404.
因此,出于某种原因,我不在这种情况下获得404,或者我误解了TestRestTemplate
的工作方式。有什么建议吗?
答案 0 :(得分:3)
TestRestTemplate
是容错的。这意味着当收到错误响应(400或更高)时,它不会抛出异常。这使得更容易测试错误场景,而不是必须捕获异常,您可以简单地断言响应的状态代码,正文,标题等与所讨论的场景一样。