当前位置: 首页 > 知识库问答 >
问题:

无法识别Wiremock占位符

严正初
2023-03-14

我用下面的json试过了,但是wiresck不能识别我的更改。我读了wiresck的留档,我看到他们说: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测试时的结果(我通过java-jartmp/wiremock.jar--全局响应模板--root-dir./mock--端口1337执行了mock):

                                                           |
{                                                          | {                                                   <<<<< 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" : ""
  }                                                        |   }
}                                                          | }
                                                           |

有人能在这里提出一些建议吗?谢谢你阅读我的问题。

共有2个答案

白文彬
2023-03-14

您必须像下面那样启用占位符,并且您应该确保您使用的是jre独立罐子。你似乎在使用普通的独立罐子

"enablePlace的持有人":真

关翰
2023-03-14

“${json unit.any string}”的用法是正确的。但占位符在使用正确的依赖项时有效。

使用依赖项com.github.tomakehurst: wiremck-jre8为我工作。

更多信息请参考https://wiremock.org/docs/request-matching/。这将提到以下注意事项

占位符仅在jre8 WireMock JAR中可用,因为JsonUnit库至少需要Java 8。

 类似资料:
  • #{}速度快,能防止sql注入,是占位符方式,先预编译,然后填充参数,字符串格式,用户名=(___),参数只是下划线上的内容 ${}是直接拼接到语句上,这种方式需要自己拼括号和参数,但是也可以拼接想执行的任何语句,也就是传说中的sql注入 详情如下 在MyBatis中使用参数进行SQL拼装经常会使用到#{var}和${var}两种参数的设置方式。下面是两种方式的不用之处: #{var} 使用预编译

  • 问题内容: 我对春天还很陌生,所以请问这是一个愚蠢的问题。当我尝试启动程序时,出现以下错误:。执行以下代码时,将引发错误: 资源文件夹中存在一个名为的属性文件,其中包含主机和端口的信息。我不确定在哪里定义(如果有的话)。也许甚至没有定义,这就是问题所在。我需要将其更改为类似的东西还是缺少其他内容? 问题答案: 您没有正确读取属性文件。propertySource应该将参数传递为:或。将注释更改为:

  • 我有以下序列

  • 我不确定这是否是一个与我没有这台计算机的管理权限有关的问题。任何帮助,以便我可以进一步排除故障,将非常感谢! 谢谢

  • 我有个例外 我也尝试过使用JarLoader和PropertiesLauncher,但运气并不好。 我确实在application.properties中定义了属性sysm.client.api.path,但为了更好地衡量,我还将它作为-d参数-dsysm.client.api.path=my-path添加到命令行中。 注意:IntelliJ没有将其作为a-jar运行;相反,它在一个大型类路径命令

  • 问题内容: 我使用,当我得到 我删除了构建路径,然后又做了 ,仍然是同样的错误。 问题答案: 该代码不是Java SE的一部分,因此这些类将不在JRE中。您需要找到并下载包含这些类的JAR文件,然后将其添加到Eclipse构建路径中。 (可以在此处下载JAR的一个地方,但是如果此链接中断,可以轻松进行自己的搜索。请转到Maven Central或findjar。)