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

WireMock 中的请求正文匹配(不是 JSON/XML)

司允晨
2023-03-14

我正在尝试使用独立的wiremck创建API模拟。响应正文取决于请求正文中的属性。

使用JSON,我能够做到。这是示例映射:

{
   "request":{
      "method":"POST",
      "bodyPatterns":[
         {
            "matchesJsonPath":"$.somekey.subkey[?(@.attribute == 'VALUE_123')]"
         }
      ]
   },
   "response":{
      "status":200,
      "bodyFileName":"res.dat",
      "headers":{
         "Content-Type":"application/x-proto;charset=UTF-8"
      }
   }
}

然而,我的主要需求是处理google protobuf,我正试图使用文本格式来代替它,模仿者将使用它来模仿API的响应。因此,请求文件是文本格式的,没有任何JSON验证,比如双引号,或者每行末尾的逗号等等。

我发现,使用JSON路径,wiremock由于格式不正确而无法匹配请求主体。例如,请求如下:

{
animal {
type {
key1: "value"
key2: value2
}
}
}

而不是

{  
   "animal":{  
      "type":{  
         "key1":"value",
         "key2":"value2"
      }
   }
}

假设key1=value1应该匹配,并且应该返回response1.json,或者当key11=someOtherValue时,应该返回response2.json。是的,键是类型的一部分,类型是动物的一部分。如何实现此请求的身体匹配?

共有1个答案

左丘季
2023-03-14

你可以这样做:

{
  "request": {
  "method": "POST",
    "url": "/authorize/oauth2/token",
    "bodyPatterns": [ {
          "matches": ".username=(test)&."
      }
    ]
  },
  "response": {
    "status": 200,
    . . .

还 https://github.com/tomakehurst/wiremock/issues/575

 类似资料:
  • 我正在使用Spring云合同创建集成测试。从配置到将存根jar添加到项目,一切都正常工作。因此,我发现尽管所有参数和标头都相同,但请求不匹配。 这是API测试 这是API调用的合约 即使我从合同请求中删除用户名,仍然收到相同的错误。 我需要为X-B3-ParentSpanId等创建标题来使其匹配吗?

  • 我使用wiremock来模拟某些请求及其相应的响应,但我试图添加一个正则表达式。不幸的是,这只会引发一个异常,表明请求不匹配。 我也试过了 我发送的请求是

  • 我正试图做到这一点: 我得到一个错误: 我已经测试了正则表达式,它是有效的。我还进行了调试,发现regexpatern也匹配。但出于某种原因,我仍然会犯这个错误。我认为我用错了。 我尝试了一个更简单的版本,但也没有成功: 有什么想法吗?提前感谢。

  • 我正在使用wiremock设置一个虚拟PHP服务器,并希望根据传递的一个XML字段进行匹配。我基本上会有多个请求进入同一个url,但它们之间的主要区别是发票号。wiremock的JSON如下所示 当我使用Postman并只传递带有

  • 因此,我试图使用wiremck向带有请求正文的URL发出后请求,然后使用我的respons.json文件返回响应。(自定义响应) 我就是这样设置的,但我似乎找不到任何关于如何设置带有请求主体的post存根(包含数据,比如说尝试创建ID),然后检索自定义响应主体(从json文件创建ID响应)的信息。我该怎么设置呢。我尝试通过json文件请求生成id,然后尝试检索创建的id。 WithBodyFile

  • 我有一个在 ./映射/*.json 文件中描述的存根。 Wiremck(ver.2.26.2)以独立模式启动。当我这样调用服务时: 我正在按预期从存根获得响应。问题是请求必须使用XML声明标签发送,例如 在这种情况下,请求不匹配。我试图在留档中找到smth,但到目前为止没有成功。