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

Spring Cloud Contract provider返回请求相同

堵雅健
2023-03-14
  Contract.make {
  request {
    method 'POST'
    url '/provider/foo'
    body(
        "foo": $(regex("[a-zA-Z0-9]{20}"))          
    )
  }
  response {
    status 200
    body(
        "fooResponse": fromRequest().body("\$.foo")
    )
 }
{
  "id" : "a80c0871-f4c0-49e3-8cc1-94de39899669",
  "request" : {
    "url" : "/provider/foo",
    "method" : "POST",
    "bodyPatterns" : [ {
      "matchesJsonPath" : "$[?(@.['foo'] =~ /[a-zA-Z0-9]{20}/)]"
    } ]
  },
  "response" : {
    "status" : 200,
    "body" : "{\"fooResponse\":\"{{{jsonpath this '$.foo'}}}\"}",
    "transformers" : [ "response-template" ]
  },
  "uuid" : "a80c0871-f4c0-49e3-8cc1-94de39899669",
  "scenarioName" : "scenarioReturnSameAsRequest",
  "requiredScenarioState" : "Started"
}

但当我的代码调用提供程序时,将foo作为任何文本,wiremock返回:

{
    "fooResponse" : "{{{jsonpath this '$.foo'}}}"
}

如何构建一个与请求体响应相同参数的契约?

编辑

  Contract.make {
  request {
    method 'POST'
    url '/provider/foo'
    body(
        "foo": $(regex("[a-zA-Z0-9]{20}"))          
    )
  }
  response {
    status 200
    body(
        "fooResponse": "fooValue"
    )
 }
{
    "fooResponse" : "fooValue"
}

也许不支持从请求获取正则表达式值?

共有1个答案

柴彬
2023-03-14

我认为映射应该包含request.body而不是this。另外,我想知道您是否需要使用{三次或仅使用两次。或者您需要转义这些?

可能的映射:

"response" : {
  "status" : 200,
  "body" : "{\"fooResponse\":\"{{jsonpath request.body '$.foo'}}\"}",
  "transformers" : [ "response-template" ]
},

另请参阅http://wiremock.org/docs/response-templating上的JsonPath helper一章

 类似资料:
  • 问题内容: 我正在尝试通过COM端口发送AT命令,但只重新发送了相同的命令。 日志: 16:19:21.910 [main]调试SerialConnections.M234Serial-创建实例。 16:19:21.974 [main]调试SerialConnections.M234Serial-发送请求:AT ^ SCFG? 16:19:23.976 [EventThread COM55]调试S

  • 我已经使用zappa在aws lambda上部署了一个flask应用程序,现在该应用程序在所有endpoint上都运行良好,除了我的主endpoint,当我对其发出post请求时,它返回{“消息”:“endpoint请求超时”} 真的需要一个修复或想法如何克服这个我需要调用分析路线,部署的url是 https://2ixfyfcsik.execute-api.eu-west-2.amazonaws

  • 我必须做一个帖子,但我得到错误405 在本网站->http://177.66.89.34:8079/transparencia/#我需要迭代页面顶部的2个下拉菜单的选项。 首先,我会在“escolha o exercício”旁边加上选项:然后,我会在“escolha a entidade”旁边加上选项: 用下面的代码,我在“EscolhaoExercício:”上面写了一篇文章 我希望在pars

  • 问题内容: 我正在使用promis模块从请求模块返回我的json数据,但是每次运行它时,它都会为我提供此信息。 我无法正常工作,有人知道这个问题吗?这是我的代码: 问题答案: 许诺是充当未来价值的占位符的对象。您的函数返回该Promise对象。通过将处理程序附加到promise,您可以在promise中获得未来的价值: 这是异步代码,因此,仅能通过处理程序来获得承诺的价值。 修改清单: 在返回的p

  • 我是SNMP新手,我正在尝试使用SNMP操作,我正在使用http://techdive.in/snmp/snmp4j-snmp-get-example代码,但我无法获得预期的输出。我得到如下空响应: SNMP获取演示正在向代理发送请求。。。从代理Snmp获取响应获取响应=[1.3.6.1.2.1.1.1.0=Null] 当我试图为MIB RFC 1213的OID获取sysDescr时,预期的输出应

  • 问题内容: 这工作正常: 这将返回400 Bad Request(只是使用.ajax来支持错误处理的上述jQuery的重新格式)。 问题答案: 我认为您只需要再添加2个选项(和):