我可以配置Spring Cloud Contract Pact测试生成来处理URL路径中的上下文

时间:2019-03-12 09:07:12

标签: spring rest-assured pact spring-cloud-contract

我在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表示这是不可能的,但是我想确认一下,因为我不明白为什么不应该支持这一点。

1 个答案:

答案 0 :(得分:1)

以我的拙见,您不应该像在控制器中那样将上下文包含在协定中。
我猜您正在使用某些API网关,因此一旦离开API网关,所有与上下文相关的处理都应结束。在您的服务级别中,上下文已经无关紧要。