mocking - Wiremock URL匹配逻辑

标签 mocking soapui wiremock

我正在尝试使用以下要求比较Soap UI和Wiremock的功能(对于我的项目中的大多数情况来说,这是很现实的)。

目标是为货币价格服务创建一个模拟。要求:

  • 在以下位置可访问

    mytesthost/priceservice/getprice
  • 需要一个称为“cur”的参数,该参数定义了currenypair
    喜欢:cur = EURHUF
  • 当按以下方式调用时,应使用保存在文件EURHUF.xml中的XML响应进行响应。

    mytesthost/priceservice/getprice?cur = EURHUF
  • 当按以下方式调用时,应使用保存在文件EURUSD.xml中的XML响应进行响应。

    mytesthost/priceservice/getprice?cur = EURUSD
  • 当使用调用任何其他货币对时,它应该以
    存储在NOCURR.xml中的错误响应

  • 在Soap UI中实现此操作归结为准备结果,而不是实现几行Groovy代码来选择响应。

    当使用wiremock解决问题时,我可以匹配两种“happpy”路径情况,但不知道如何实现后备情况(使用NOCURR.xml)。

    我如何进行匹配的示例:
    {
        "request": {
            "method": "GET",
            "url": "/priceservice/getprice?cur=EURUSD"
        },
        "response": {
            "status": 200,
            "bodyFileName": "EURUSD.xml"
        }
    }
    

    我可以用Wiremock做到这一点吗?我主要对通过Json配置执行此操作感兴趣,但是如果使用Java API也可以的话。

    最佳答案

    找到了解决方案。因此,我们有三个Json映射文件:

  • 对于匹配EURUSD的
  • 对于与CHFHUF匹配的
  • 其他所有内容-甚至不存在现有货币对

  • 对于第一和第二,映射是这样的:
    {
        "priority": 1,
        "request": {
            "method": "GET",
            "url": "/priceservice/getprice?cur=CHFHUF"
        },
        "response": {
            "status": 200,
            "bodyFileName": "CHFHUF.xml"
        }
    }
    

    请注意优先级= 1!

    至于“其他”情况,我们有:
    {
        "priority": 2,
        "request": {
            "method": "GET",
            "urlPattern": "/priceservice/.*"
        },
        "response": {
            "status": 200,
            "bodyFileName": "NOCURR.xml"
        }
    }
    

    不仅这具有较低的优先级(2),而且还为“regex”匹配添加了“userPattern”而不是“url”。

    关于mocking - Wiremock URL匹配逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26891506/

    相关文章:

    unit-testing - 模拟重载方法

    unit-testing - 单元测试具有许多私有(private)方法的复杂类

    web-services - 模拟 Web 服务响应 |将其中的几个捆绑在一个网络应用程序中

    使用 Wiremock 进行 XML 匹配

    java - 为什么我要使用 MockWebServer 而不是 WireMock?

    c# - 继承自 IReadOnlyCollection 的模拟类

    ruby - RSpec - 通用失败消息而不是有用的输出

    java - 测试 Spring MVC Restful Web 服务没有 UI

    soapui - 如何在 SoapUI 项目中按字母顺序排列服务操作?

    java - SSL 握手异常 : no cipher suites in common using asynchttpclient and wiremock using self signed certificate