6

我正在尝试使用以下要求来比较 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 解决问题时,我可以匹配两个“快乐”路径案例,但不知道如何实现回退案例(使用NOCURR.xml)。

关于我如何进行匹配的示例:

{
    "request": {
        "method": "GET",
        "url": "/priceservice/getprice?cur=EURUSD"
    },
    "response": {
        "status": 200,
        "bodyFileName": "EURUSD.xml"
    }
}

我可以用wiremock实现这个吗?我主要有兴趣通过 Json 配置来做到这一点,但如果 Java API 也可以。

4

1 回答 1

13

找到了解决方案。所以我们有三个Json映射文件:

  1. 对于 EURUSD 匹配
  2. 对于 CHFHUF 匹配
  3. 对于其他一切——即使是不存在的货币对

第一次和第二次的映射是这样的:

{
    "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),而且我添加了“userPattern”而不是“url”以进行正则表达式匹配。

于 2014-11-13T14:06:41.363 回答