首页 > 解决方案 > 我可以配置 Spring Cloud Contract Pact 测试生成来处理 URL 路径中的上下文吗

问题描述

我在这里有一个演示项目https://github.com/donalthurley/pact-demo,它显示了我遇到的问题。

一般问题是我正在尝试开发一个符合 PACT 合同的 API,其中合同使用包含上下文的 URL 路径。

spring boot 控制器 API 在路径中映射没有上下文的请求,请参见 https://github.com/donalthurley/pact-demo/blob/master/src/main/java/com/example/demo/DemoController.java#L22

PACT 合同指定了相同的请求,其 URL 路径前附加了上下文“演示”,请参阅 https://github.com/donalthurley/pact-demo/blob/master/src/main/resources/demo-pact.json#L14

当 pact 生成单元测试时,在这种情况下它会失败并出现 404。

如果从 PACT 合约中删除上下文,则生成的测试成功。

我的问题是,有什么方法可以告诉 PACT 生成使用“演示”上下文,以便生成的测试可以工作?

这个较早的答案How to set the context path in Spring Boot WebMvcTest表明这是不可能的,但我想确认一下,因为我不明白为什么不应该支持它。

标签: springrest-assuredpactspring-cloud-contract

解决方案


在我看来,你不应该在协议中包含上下文,就像你的控制器一样。
我猜你正在使用一些 API 网关,所以一旦你离开 API 网关,所有与上下文的处理都应该结束。在您的服务级别中,上下文已经无关紧要。


推荐阅读