【问题标题】:Wiremock Return Success or Error Response from the same JSON MappingWiremock 从相同的 JSON 映射返回成功或错误响应
【发布时间】:2020-05-07 17:30:36
【问题描述】:

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

我想知道的是……

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

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

【问题讨论】:

    标签: testing mocking wiremock stubbing wiremock-standalone


    【解决方案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")));
    

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

    【讨论】:

    • 非常感谢您详尽的回复!现在我试图避免出现这种情况。我坚持通过优先级来管理所有内容,但正如你所说,我会查找 Response Transformer。优先级路线在这里是一个简单的工作建议。谢谢!
    • 没问题!我认为避免情景是合理的——我尽可能地尝试做同样的事情。如果您想要像示例一样简单的东西,优先级将起作用,但是一旦事情变得更复杂,我会推荐响应转换器,但需要注意的是,我建议几乎任何东西都使用响应转换器。 (有时这是正确的用法,有时它有点像用手提钻挂画)
    猜你喜欢
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    相关资源
    最近更新 更多