如果生产者更改输入消息正文,我们是否有办法从消费者端测试输入消息契约。
我们只使用 stubTrigger.trigger("label"); 从消费者方面进行测试,但消费者如何知道生产者是否更改了输入消息合同?消费者测试用例对我来说似乎总是通过,即使生产者更改输入合同。
如果生产者更改输入消息正文,我们是否有办法从消费者端测试输入消息契约。
我们只使用 stubTrigger.trigger("label"); 从消费者方面进行测试,但消费者如何知道生产者是否更改了输入消息合同?消费者测试用例对我来说似乎总是通过,即使生产者更改输入合同。
所以我知道您有一些同步情况,您收到一条消息,然后将另一条消息发送到其他应用程序?还是反过来说,您发送一条消息,然后期望收到另一条消息。
你有2个选择。一种是阅读文档并使用这种方法(http://cloud.spring.io/spring-cloud-static/Dalston.SR3/#_scenario_2_output_triggered_by_input)。在这里,您可以定义一个合同,其中特定的输入消息将允许触发输出。因此,在您的情况下,如果您的输出消息错误,那么您将不会收到另一条消息。另一种方法实际上是将其拆分为 2 个合同(https://github.com/spring-cloud/spring-cloud-contract/issues/321)。假设您的应用程序称为 A,另一个称为 B。第一个合约将是 A 向 B 发送消息(A 是生产者),第二个合约是 B 向 A 发送消息(B 是生产者)。因此,如果 A 想要更改输入以将消息发送给 B,则合约测试将失败。