如何为最近消费者不再使用的接口编写契约测试?
How to write a pact test for an interface, which is not used by the most recent consumer anymore?
我有一个奇怪的情况,我不知道如何处理它:
假设我有一个消费者 C 和一个提供者 P.
我们在实现这些服务时没有使用 Pact。所以这就是问题所在:C 的旧版本需要 P 的特定接口,它通过 url 参数提供一些信息。但是最新版本的 C 甚至不能发送这种请求。由于仍然存在旧版本的 C,我们需要确保此接口仍由 P 提供并正常工作。
我正在使用 Pact-JVM,看来我必须以某种方式发送此请求,否则测试将失败。我正在努力为这种情况创建有意义的测试。我可以创建一个虚拟对象来发送请求,但不会测试任何内容。有人知道在这种情况下该怎么做吗?
我建议您检查旧版本消费者的提交,从中创建一个新分支,将 pact 测试添加到该分支,然后正常发布。
如果所有其他方法都失败了(我通常不会建议这样做),您可以采用最近生成的契约,手动修改它以符合旧消费者的期望,然后手动将其发布到 Pact Broker。
如果我没理解错的话,有两个(或更多)版本的 C 正在生产中,P 上有不同版本的合约。一种选择是用单独的名称发布旧的 C 并验证它是否正常。另一种选择是发布同名契约。
如果您选择后者,您需要确保将两个版本都标记为 prod
,然后在提供商方面,您可以使用 [=12] 验证合同的所有 prod
版本=].
我有一个奇怪的情况,我不知道如何处理它: 假设我有一个消费者 C 和一个提供者 P.
我们在实现这些服务时没有使用 Pact。所以这就是问题所在:C 的旧版本需要 P 的特定接口,它通过 url 参数提供一些信息。但是最新版本的 C 甚至不能发送这种请求。由于仍然存在旧版本的 C,我们需要确保此接口仍由 P 提供并正常工作。
我正在使用 Pact-JVM,看来我必须以某种方式发送此请求,否则测试将失败。我正在努力为这种情况创建有意义的测试。我可以创建一个虚拟对象来发送请求,但不会测试任何内容。有人知道在这种情况下该怎么做吗?
我建议您检查旧版本消费者的提交,从中创建一个新分支,将 pact 测试添加到该分支,然后正常发布。
如果所有其他方法都失败了(我通常不会建议这样做),您可以采用最近生成的契约,手动修改它以符合旧消费者的期望,然后手动将其发布到 Pact Broker。
如果我没理解错的话,有两个(或更多)版本的 C 正在生产中,P 上有不同版本的合约。一种选择是用单独的名称发布旧的 C 并验证它是否正常。另一种选择是发布同名契约。
如果您选择后者,您需要确保将两个版本都标记为 prod
,然后在提供商方面,您可以使用 [=12] 验证合同的所有 prod
版本=].