【发布时间】:2018-09-30 00:59:18
【问题描述】:
我开始在我的应用程序上使用 Hystrix 来处理来自外部服务的数据。我的代码中的一些要点:
@HystrixCommand(fallbackMethod = "getImagesFallback")
public ImageResultResource getImages(String url)
{
ResponseEntity<ResultResource> result = restTemplate.exchange(url, HttpMethod.GET, new HttpEntity<>(getRequestHeaders()), ResultResource.class);
return result.getBody().getImageResultResource();
}
public ImageResultResource getImagesFallback(String url, Throwable e)
{
return new ImageResultResource();
}
在我的单元测试中,我想测试回退情况,例如当外部服务返回 404 Not Found 响应时,所以我模拟我的测试如下:
doThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND))//
.when(Mockito.spy(new ImageConnector()))//
.getImages(myMockedURL)
但是当我运行测试时,我上面定义的 fallbackMethod 似乎没有被调用。它直接返回了我为外部服务模拟的 404 Not Found,而我希望 fallbackMethod 应该在这里被捕获,并且不会在这里抛出 404 Not Found。
谁能给我提示在这种情况下如何测试我的 fallbackMethod,或者我在这里的配置有问题吗?非常感谢!
【问题讨论】:
标签: unit-testing spring-boot resttemplate hystrix