gpt4 book ai didi

java - 模拟新的 HttpClientErrorException.NotFound

转载 作者:行者123 更新时间:2023-12-03 08:41:13 26 4
gpt4 key购买 nike

我有一个返回 HttpClientErrorException.NotFound 的第三方服务。当它返回此异常时,我从应用程序中抛出异常,表示输入无效,但对于所有其他异常(例如服务不可用等),我需要使用默认值并进一步继续。

我的代码块如下:

public String callService(String input)
{
String value = "";
try
{
value = service.callMethod(input);
}
catch(HttpClientErrorException.NotFound e1)
{
throw new ApplicationException("Invalid Input")
}
catch(Exception e)
{
value = "US";
}
return value;
}

当我为此编写 JUnit 时,如何模拟对 service.callMethod(input) 的调用并返回 HttpClientErrorException.NotFound

我尝试模拟并发送状态代码,如下所示,但它不起作用。

Junit测试用例方法如下:

@Test(expected = ApplicationException.class)
public void callServiceInvalidInput() throws ApplicationException
{
String inputValue = "JLR";
when(externalService.callMethod(inputValue))
.thenThrow(new HttpClientErrorException(HttpStatus.NOT_FOUND));

String result = handler.callService(inputValue);
}

当我模拟服务调用时,执行的 catch 子句是 Exception e,而不是前一个。原因是对象e在模拟时是instanceof HttpClientErrorException;但当实际的服务调用发生时,它是 HttpClientErrorException$NotFound 的实例

最佳答案

当我尝试检查 NotFound 的实际设置方式时,我找到了答案。

when(externalService.callMethod(inputValue)) 
.thenThrow(HttpClientErrorException.create(HttpStatus.NOT_FOUND, "not found", null, null, null));

我调用了 create 方法来返回该特定的内部类。

关于java - 模拟新的 HttpClientErrorException.NotFound,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62725487/

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