gpt4 book ai didi

java - 如何使用 MockRestServiceServer 测试 RestClientException

转载 作者:IT老高 更新时间:2023-10-28 13:48:58 37 4
gpt4 key购买 nike

在测试 RestClient-Implementation 时,我想模拟一个 RestClientException,该实现 f.e. 中的某些 RestTemplate-methods 可能会抛出该异常。删除方法:

@Override
public ResponseEntity<MyResponseModel> documentDelete(String id) {
template.setErrorHandler(new MyResponseErrorHandler());
ResponseEntity<MyResponseModel> response = null;
try {
String url = baseUrl + "/document/id/{id}";
response = template.exchange(url, DELETE, null, MyResponseModel.class, id);
} catch (RestClientException ex) {
return handleException(ex);
}
return response;
}

我怎样才能做到这一点?

我是这样定义模拟服务器的:

@Before
public void setUp() {
mockServer = MockRestServiceServer.createServer(template);
client = new MyRestClient(template, serverUrl + ":" + serverPort);
}

最佳答案

您可以从 MockRestServiceServer 测试抛出运行时异常,尽管从 Spring 5.0.0.RC4 开始,这个类不是为它设计的(这意味着它可能不适用于更复杂的用例):

RestTemplate yourApi;
MockRestServiceServer server = MockRestServiceServer.createServer(yourApi);

server.expect(requestTo("http://..."))
.andRespond((response) -> { throw new ResourceAccessException(
new ConnectException("Connection reset")); });

它似乎在测试中起作用:

  • 只有一个 RestTemplate 调用,
  • 由于最后的期望而引发异常的地方。

我没想到会连续出现两次异常; MockRestSeriviceServer(更具体地说,SimpleRequestExpectationManager)在重放第二个期望时抛出 IllegalStateException

关于java - 如何使用 MockRestServiceServer 测试 RestClientException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42577392/

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