我可以配置 Spring Cloud Contract Pact 测试生成来处理 URL 路径中的上下文吗
Can I configure the Spring Cloud Contract Pact test generation to handle a context in the URL path
我这里有一个演示项目https://github.com/donalthurley/pact-demo,它显示了我遇到的问题。
一般的问题是我正在尝试开发一个符合 PACT 合同的 API,其中合同使用包含上下文的 URL 路径。
spring 引导控制器 API 映射路径中没有上下文的请求,请参阅
https://github.com/donalthurley/pact-demo/blob/master/src/main/java/com/example/demo/DemoController.java#L22
PACT 合同指定了相同的请求,其中上下文 'demo' 前置到 URL 路径,请参阅
https://github.com/donalthurley/pact-demo/blob/master/src/main/resources/demo-pact.json#L14
当 pact 生成单元测试时,它在本例中失败并返回 404。
如果上下文从 PACT 合同中删除,则生成的测试成功。
我的问题是,有什么方法可以告诉 PACT 生成使用 'demo' 上下文,以便生成的测试能够工作?
这个较早的回答 表明这是不可能的,但我想确认一下,因为我不明白为什么不支持它。
以我的拙见,你不应该像你的控制器那样在契约中包含上下文。
我猜你正在使用一些 API-gateway,所以一旦你离开 API-gateway,所有与上下文的处理都应该结束。在您的服务级别中,上下文已经无关紧要。
我这里有一个演示项目https://github.com/donalthurley/pact-demo,它显示了我遇到的问题。
一般的问题是我正在尝试开发一个符合 PACT 合同的 API,其中合同使用包含上下文的 URL 路径。
spring 引导控制器 API 映射路径中没有上下文的请求,请参阅 https://github.com/donalthurley/pact-demo/blob/master/src/main/java/com/example/demo/DemoController.java#L22
PACT 合同指定了相同的请求,其中上下文 'demo' 前置到 URL 路径,请参阅 https://github.com/donalthurley/pact-demo/blob/master/src/main/resources/demo-pact.json#L14
当 pact 生成单元测试时,它在本例中失败并返回 404。
如果上下文从 PACT 合同中删除,则生成的测试成功。
我的问题是,有什么方法可以告诉 PACT 生成使用 'demo' 上下文,以便生成的测试能够工作?
这个较早的回答
以我的拙见,你不应该像你的控制器那样在契约中包含上下文。
我猜你正在使用一些 API-gateway,所以一旦你离开 API-gateway,所有与上下文的处理都应该结束。在您的服务级别中,上下文已经无关紧要。