首页 > 解决方案 > 无法识别 Wiremock 占位符

问题描述

我尝试使用以下 json,但wiremock 无法识别我的更改。我阅读了wiremock的文档,看到他们说:JSON相等匹配基于JsonUnit,因此支持占位符。我也尝试过使用 JDK 8 和 JDK 13,但两者都不起作用

下面是详细信息

    "method" : "POST",
    "bodyPatterns" : [{
      "equalToJson" : {
        "recipient": {
           "address": {
              "city": "Bellevue",
              "postalCode": "52031",
              "countryCode": "US"
           }
        },
        "sender": {
           "address": {
              "city": "",
              "postalCode": "",
              "countryCode": "HK"
           }
        },
        "shipDate": "${json-unit.any-string}",
        "accountNumber": {
           "key": ""
        }
      },

使用 mock 运行 selenium 测试时的结果(我通过 执行了 mock java -jar tmp/wiremock.jar --global-response-templating --root-dir ./mock --port 1337):

                                                           |
{                                                          | {                                                   <<<<< Body does not match
  "recipient" : {                                          |   "recipient" : {
    "address" : {                                          |     "address" : {
      "city" : "Bellevue",                                 |       "city" : "Bellevue",
      "postalCode" : "52031",                              |       "postalCode" : "52031",
      "countryCode" : "US"                                 |       "countryCode" : "US"
    }                                                      |     }
  },                                                       |   },
  "sender" : {                                             |   "sender" : {
    "address" : {                                          |     "address" : {
      "city" : "",                                         |       "city" : "",
      "postalCode" : "",                                   |       "postalCode" : "",
      "countryCode" : "HK"                                 |       "countryCode" : "HK"
    }                                                      |     }
  },                                                       |   },
  "shipDate" : "${json-unit.any-string}",                  |   "shipDate" : "May-26-2020",
  "accountNumber" : {                                      |   "accountNumber" : {
    "key" : ""                                             |     "key" : ""
  }                                                        |   }
}                                                          | }
                                                           |

任何人都可以在这里提出一些建议。感谢您阅读我的问题

标签: wiremockwiremock-standalone

解决方案


您必须启用如下占位符,并且您应该确保您使用的是 jre-standalone jar。你似乎在使用普通的独立 jar

"enablePlaceholders" : true


推荐阅读