我写了一个
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 entity = new HttpEntity("{}", headers);
restTemplate.put("/doesntexist", entity);
}
}
当我希望put方法抛出异常时,如the documentation所述:
Throws:
RestClientException – on-client side HTTP error
我已经确认,如果我正常运行我的应用程序,我在尝试PUT到同一个URL时会得到404.
所以要么我出于某种原因没有在这种情况下获得404,要么我误解了TestRestTemplate是如何工作的.有什么建议?