Testing Wiremock从相同的JSON映射返回成功或错误响应

Testing Wiremock从相同的JSON映射返回成功或错误响应,testing,mocking,wiremock,stubbing,wiremock-standalone,Testing,Mocking,Wiremock,Stubbing,Wiremock Standalone,我对Wiremock非常陌生,尽管我已经阅读了文档,但我仍然没有完全理解它 我想知道的是 是否有方法在1存根中定义两种行为-成功响应案例和错误响应(或多个)案例,以防请求的正文匹配模式未得到满足? 是否支持这一点,或者我应该为每种类型的无效请求编写单独的请求匹配程序,例如请求正文?当然是以更普遍的方式 如果可以在同一存根JSON中组合错误响应和成功响应,请给我一个例子或给我指出一个例子?使用两个具有不同优先级的不同存根可以轻松完成特定示例(例如,请求的正文匹配模式未得到满足?)。 第一个存根将具

我对Wiremock非常陌生,尽管我已经阅读了文档,但我仍然没有完全理解它

我想知道的是

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

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

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

例如,如果唯一的区别是您希望对“/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")));

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

非常感谢您详尽的响应!目前,我正试图避免出现这种情况。我一直坚持通过优先级管理所有事务,但正如您所说,我将查看响应转换器。这里的优先顺序是一个简单的工作建议。谢谢没问题!我认为避免场景是合理的——我尽可能地做同样的事情。如果您想要像示例一样简单的东西,那么优先级将起作用,但一旦事情变得更复杂,我建议使用响应转换器,但需要注意的是,对于几乎任何事情,我都建议使用响应转换器。(有时这是正确的用法,而有时这有点像用手提钻挂画)