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

具有动态响应的Wiremock Standalone

江鹏飞
2023-03-14

我有一个Wiremock服务器的独立实例。映射作为json文件存储在mappings文件夹下。我有一个POST请求,需要在响应中返回一个动态ID(整数)。有没有办法在json文件中进行配置?

共有3个答案

耿建弼
2023-03-14

这似乎是OpenTable Wiremock Body Transformer的完美用例。

它可以很容易地与独立服务器集成,如下所示:

java-cp“wiremock-body-transformer-1.1.6.jar:wiremock-2.3.1-standalone.jar”com.github.托马克赫斯特。wiremock。独立的。WireMockServerRunner——详细——扩展com。打开桌子。扩大车身变压器

并允许您轻松指定要在响应中匹配的动态变量。

这是一个无需在请求中指定任何内容即可获得随机整数的示例,但是如果您需要将请求中的特定变量与响应匹配,那么使用此扩展也非常可行,并且可以在自述文件中找到许多示例。

{
    "request": {
        "method": "POST",
        "urlPath": "/transform",
    },
    "response": {
        "status": 200,
        "body": "{\"randomInteger\": \"$(!RandomInteger)\"}",
        "headers": {
            "Content-Type": "application/json"
        },
        "transformers": ["body-transformer"]
    }
}
商天逸
2023-03-14

在WireMock中,有许多用于生成随机字符串的响应模板助手函数。在下面的示例中,我使用用于生成UUID的函数,但还有其他几个选项。

映射文件:dynamic_id.json

{
  "request": {
    "method": "POST",
    "url": "/dynamic_id"
  },
  "response": {
    "headers": {
      "Content-Type": "application/json"
    },
    "status": 200,
    "body": "{{randomValue type='UUID'}}",
    "transformers": ["response-template"]

  }
}

使用空帖子http://wiremock/dynamic_id将返回类似于以下内容的id:c2e6bf32-c9a3-45c0-b988-94fad04cc7a2

启动WireMock:

java -jar wiremock-standalone-2.18.0.jar --port 8181 --verbose --local-response-templating
秦博达
2023-03-14

为了让上述示例正常工作,我必须使用--全局响应模板运行独立jar。然后我看到,例如,{{now}正在工作,这正是我想要的。不确定文档是否指定了这一点——我尝试了“总是有用的”帮助。

 类似资料:
  • 我正在努力使用swagger的语法来描述响应类型。我试图建模的是一个带有动态键和值的哈希映射。这是允许本地化所必需的。语言可能不同,但应始终提供英语。 在JSON中,响应如下所示: 我的第一次尝试是这样的,但我不知道如何为这个名字写部分。AdditionalProperties似乎是一把钥匙,但我无法把头缠在它身上。另外,对英语文本的要求对我来说是一个谜,在这个语法中,这个例子似乎也不像预期的那样

  • 所有人。我是Angular 2和Spring框架的新手。我正在尝试一个带有授权头(基本身份验证)的简单get请求。 我使用的是Spring Boot(1.2.6.Release),这也可能是相关的。我的CORS配置如下所示。 帮帮我,我不知道我错过了什么...我已经查了很多帖子,但都没找到。

  • 我想知道是否有什么方法可以使属性值动态。类似于这样: 感谢您的反馈。在我的例子中,属性值是系统特定的,应该在测试运行时生成。

  • 问题内容: 大家。我是Angular 2和Spring框架的新手。我正在尝试使用授权标头(基本auth)进行简单的get请求。 我正在使用Spring Boot(1.2.6.RELEASE),这也可能是相关的。我的CORS配置如下所示。 这是客户端的外观 我不断得到: XMLHttpRequest无法加载 http:// localhost:8080 / api / login?username

  • 我正在尝试使用Ajax进行REST调用(POST)。这是我的AJAX代码 最初,我得到了这个错误:XMLHttpRequest无法加载http://localhost:port/service/myservice。对preflight请求的响应未通过访问控制检查:请求的资源上没有“access-control-allow-origin”标头。因此不允许访问源“null”。响应的HTTP状态代码为4

  • 我使用作为服务器端的Spring-boot并提供一个虚拟服务进行测试 其中我的serviceCaller.java=