如何 return 来自 HTTP 请求的模拟响应对象?

How to return a mock response object from HTTP request?

我是 Java 编程的新手,我有以下代码片段,我想在上面编写单元测试:

Response response = request.get();
if (response.getStatusInfo().getFamily().equals(Response.Status.Family.SUCCESSFUL)) {
     return response.readEntity(type);
}

我可以使用以下代码创建 HTTP 请求 return 有效响应的场景:

stubFor(get("someUrl").willReturn(aResponse().withStatus(200)));

我想创建另一个场景,方法调用 response.readEntity(type) 会引发异常。为此,我要求 request.get() 方法 return 给我一个模拟对象,以便我可以在模拟对象上定义所需的行为。 我阅读了 http://wiremock.org/docs 提供的文档以了解如何执行此行为,但没有找到任何方法 return 模拟对象作为 HTTP 响应。

此外,request 变量没有被注入,因此我不能直接模拟它。

你不能做类似

的事情

stubFor(get("/$metadata?annotations=true").willReturn(aResponse().withStatus(200).withBody(Mock()));。这是因为 wiremock 仅充当 http 服务器模拟。您唯一可以配置的是响应(例如 JSON)。 您可以做的是 return 例如来自 wiremock 的 400 和错误代码正文,并检查您的代码是否接受此消息并正确执行。