spring - 我可以配置 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表明这是不可能的,但我想确认一下,因为我不明白为什么不应该支持它。
解决方案
在我看来,你不应该在协议中包含上下文,就像你的控制器一样。
我猜你正在使用一些 API 网关,所以一旦你离开 API 网关,所有与上下文的处理都应该结束。在您的服务级别中,上下文已经无关紧要。
推荐阅读
- java - 如何限制多个电子邮件 ID 插入数据库?
- c++ - std::shared_ptr 在空指针上调用非默认删除器
- function - 如何每天更新 Google 表格中的 TODAY 功能(无需我打开表格)
- sql - pls-00642 sql 语句中不允许的本地集合类型
- forms - 访问:设置和使用全局变量
- php - 如何从被调用函数重定向回编辑页面?
- java - 如何通过自定义比较器对包含扩展类的列表列表进行排序?
- react-native - React-native:超级表达式必须为 null 或函数
- c++ - 比较看起来相同的 2 个 CString 时出现问题
- python - 迭代python表中的浮点数列表