gpt4 book ai didi

java - 为什么 TestRestTemplate 会忽略 404 客户端错误?

转载 作者:搜寻专家 更新时间:2023-11-01 02:59:47 25 4
gpt4 key购买 nike

我编写了一个 Spring Boot Controller ,用于监听发送到 /orders/ 的 PUT 请求。

在我的集成测试中,我注意到 TestRestTemplate 没有像我预期的那样对 404 响应做出异常 react 。这会导致这样的测试通过:

@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 中所述:

Throws:
RestClientException - on-client side HTTP error

我已经确认,如果我正常运行我的应用程序,我会在尝试 PUT 到相同的 URL 时收到 404。

所以要么我没有在这种情况下出于某种原因得到 404,要么我误解了 TestRestTemplate 的工作方式。有什么建议吗?

最佳答案

TestRestTemplate 在设计上是容错的。这意味着它不会在收到错误响应(400 或更大)时抛出异常。这使得测试错误场景变得更容易,因为您不必捕获异常,只需断言响应的状态代码、正文、 header 等符合所讨论场景的预期。

关于java - 为什么 TestRestTemplate 会忽略 404 客户端错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38741733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com