我在这里有一个演示项目https://github.com/donalthurley/pact-demo,它显示了我遇到的问题。
一般问题是我正在尝试开发符合PACT合同的API,其中合同使用包含上下文的URL路径。
spring boot controller API在没有路径中的上下文的情况下映射请求,请参阅https://github.com/donalthurley/pact-demo/blob/master/src/main/java/com/example/demo/DemoController.java#L22
PACT合约指定相同的请求,并在URL路径前加上上下文'demo',请参阅https://github.com/donalthurley/pact-demo/blob/master/src/main/resources/demo-pact.json#L14
当pact生成单元测试时,它在这种情况下失败了404。
如果从PACT合同中删除上下文,则生成的测试成功。
我的问题是,有什么方法可以告诉PACT生成使用'demo'上下文,以便生成的测试可以工作吗?
这个早期的答案How to set the context path in Spring Boot WebMvcTest会建议这是不可能的,但我想确认一下,因为我不明白为什么不应该支持这个。
在我看来,你不应该在协议中包含上下文,就像你的控制器一样。 我猜你正在使用一些API网关,所以一旦你离开API网关,所有处理上下文都应该结束。在您的服务级别,上下文已经无关紧要。