0

我对 Wiremock 很陌生,即使我已经阅读了文档,我仍然没有完全理解它。

我想知道的是...

有没有办法在 1 个存根中定义两种行为——一个成功响应案例和一个错误响应(或多个)案例,以防请求的主体匹配模式不满足?是否支持或者我应该为每种类型的无效请求匹配器编写单独的请求匹配器,例如请求正文?当然,以更普遍的方式。

如果可以在同一个存根 JSON 中结合错误响应和成功响应,请给我一个例子或者也给我一个例子?

4

1 回答 1

1

使用具有两个不同优先级的两个不同存根可以轻松完成特定示例(例如,请求的主体匹配模式不满足?)。第一个存根将具有更高的优先级并且是更具体的匹配并返回成功响应。第二个存根的优先级较低,本质上是所有其他调用的包罗万象,并返回失败响应。

例如,如果唯一的区别是您希望对“/success-endpoint”的所有调用都返回 200,而任何其他调用都返回 400...

stubFor(get("/success-endpoint").atPriority(1)
    .willReturn(ok("Success response body")));

stubFor(get(urlMatching("/.*")).atPriority(2)
    .willReturn(aResponse().withStatus(400).withBody("Error response body")));

如果你想在同一个存根中组合成功/错误响应,你需要使用更多的创造力。如果状态代码在请求正文中,您可以使用响应模板获取它并将其作为响应状态代码插入。如果它不是超级可见并且您需要在请求中使用其他内容,您可以创建一个响应转换器并使用它来通知您的条件响应。也许场景是你的胡同。抱歉,此回复的其余部分不是非常具体,而是有点模糊,但在不知道您的请求/回复是什么样子的情况下,有很多可行的选择。

于 2020-05-08T20:43:54.587 回答