我在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生成者使用“演示”上下文,以便生成的测试能够正常工作?
这个较早的答案How to set the context path in Spring Boot WebMvcTest表示这是不可能的,但是我想确认一下,因为我不明白为什么不应该支持这一点。
答案 0 :(得分:1)
以我的拙见,您不应该像在控制器中那样将上下文包含在协定中。
我猜您正在使用某些API网关,因此一旦离开API网关,所有与上下文相关的处理都应结束。在您的服务级别中,上下文已经无关紧要。