我正在尝试为 GET 请求创建一个合同,并且我想使用一个路径参数,它也可以在响应中重用。这是可能吗?我只能找到 POST、查询参数和正文的示例。因此,如果我想定义一个请求实体的合同,即 /books/12345-6688,我想在响应中重用指定的 ID。
我如何为这样的事情创建合同?
我正在尝试为 GET 请求创建一个合同,并且我想使用一个路径参数,它也可以在响应中重用。这是可能吗?我只能找到 POST、查询参数和正文的示例。因此,如果我想定义一个请求实体的合同,即 /books/12345-6688,我想在响应中重用指定的 ID。
我如何为这样的事情创建合同?
不,这是不可能的,因为https://github.com/tomakehurst/wiremock/issues/383。从理论上讲,您可以创建自己的转换器 + 覆盖 Spring Cloud Contract 中生成存根的方式。这样,WireMock 存根将包含对您的新变压器的引用(如 WireMock 文档中介绍的 - http://wiremock.org/docs/extending-wiremock/)。但这听起来像是为某事做了大量工作,而这似乎并不是那么必要。为什么你需要这样做?在消费者方面,您想测试集成,对吗?因此,只需硬编码合同中的一些值,而不是引用它们,然后检查您是否可以解析这些值。
更新:如果您只需要参数化请求 URL 但不想在响应中引用它,您可以使用像这里这样的正则表达式 - https://cloud.spring.io/spring-cloud-contract/single/spring- cloud-contract.html#_regular_expressions
UPDATE2:就像@laffuste 提到的那样,从 RC1 开始,您可以引用一个具体的路径元素