Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Wiremock-从URL获取字符串,修改它并将其作为正文的一部分返回_Java_Mocking_Wiremock - Fatal编程技术网

Java Wiremock-从URL获取字符串,修改它并将其作为正文的一部分返回

Java Wiremock-从URL获取字符串,修改它并将其作为正文的一部分返回,java,mocking,wiremock,Java,Mocking,Wiremock,我正在处理一些工作中的负载测试场景,我在弄清楚如何使用Wiremock实现这一点时遇到了一些问题 基本上就是这样。我有一段代码,它使一个GET到达一个看起来像/api/1/external/client/1234%12LT的端点,我想抓住最后一部分,去掉%(包括在内)后面的所有内容,只返回前面的数字,作为非常简单的JSON{“id:“1234”}的一部分 我一直在阅读有关响应模板化的内容,并通过在命令行上传递标志--global Response Templating在我的独立实例上启用了它。我

我正在处理一些工作中的负载测试场景,我在弄清楚如何使用Wiremock实现这一点时遇到了一些问题

基本上就是这样。我有一段代码,它使一个
GET
到达一个看起来像
/api/1/external/client/1234%12LT
的端点,我想抓住最后一部分,去掉
%
(包括在内)后面的所有内容,只返回前面的数字,作为非常简单的JSON
{“id:“1234”}
的一部分

我一直在阅读有关
响应模板化的内容,并通过在命令行上传递标志
--global Response Templating
在我的独立实例上启用了它。我认为它是有效的,因为如果我使用
{{randomValue length=10 type='NUMERIC'}}
之类的东西将它设置为返回一个随机值,它实际上返回一个随机数

我认为应该结合使用
request.requestLine.pathSegments.[4]
来获取URL的最后一段,然后使用正则表达式提取器
{{regexExtract request.body'[a-Z]+'}}{/code>(不是实际的代码,示例取自文档)获取第一个数字部分,但尚未成功使其工作

我的模拟代码如下所示:

{
  "request": {
    "urlPattern": "/api/1/example/endpoint/.*",
    "method": "GET"
  },
  "response": {
    "status": "200",
    "headers": {
      "Content-Type": "application/json; charset=utf-8"
    },
    "jsonBody": {
      "id": "{{request.requestLine.pathSegments.[4]}}"
    }
  }
}
有人能告诉我哪里出了问题吗

还有一个问题,你通常是如何调试的?我已经看过了文档,不确定如何将信息打印到日志中,以查看我尝试进行的替换是否实际有效,或者到达端点的内容是否是我假设应该得到的


谢谢。

假设您在启用全局响应模板的情况下启动WireMock实例,然后使用以下映射:

{
  "request": {
    "urlPattern": "/api/1/external/client/.*",
    "method": "GET"
  },
  "response": {
    "status": "200",
    "headers": {
      "Content-Type": "application/json; charset=utf-8"
    },
    "jsonBody": {
      "id": "{{regexExtract request.requestLine.pathSegments.[4] '[0-9]*'}}"
    }
  }
}
给定以下URL:

http://localhost:8080/api/1/external/client/1234%12LT
答复将是:

{
    "id": "1234"
}

看起来我的助手本身有问题。在日志中获取此信息:
wiremock.com.github.jknack.handlebars.handlebars异常:inline@712556c0:1:13:找不到帮助程序:“regexExtract”
。可能我使用的是旧版本或其他什么?我正在尝试找出支持该功能的最低版本,但到目前为止运气不佳。Th我使用的是e版本,最新版本的下载链接可以在文档中找到:。是的,看起来我们使用的是2.22.something。我会研究更新它。同时…你知道有没有一种方法可以做类似的事情,但只是通过操纵字符串?我可以正确获得路径中的第四段,如果我可以的话不要在%处拆分它,或者在第n个字符之后修剪所有内容就足够了。