2

我正在尝试采用 Pact。我了解等式的消费者方面,它看起来非常好。但我对制片方感到困惑。

文档似乎提倡运行提供程序应用程序,并针对正在运行的服务器验证合同。

我宁愿不这样做。首先,我需要为每个协议创建一个包含适当信息的数据库,这至少可以说是痛苦的。其次,启动应用程序会很麻烦——我有没有提到它是一个整体?- 最后,有 POSTS 会改变数据库的状态,并使测试运行变得脆弱。

我想做的是用协议做一个 mockMvc 风格的测试。我想模拟我的服务,只测试端点,我认为在这种情况下应该测试什么。

我如何通过 Pact 实现这一目标?

4

3 回答 3

1

是的,您可以通过 PACT 实现它,但是我与 Cotnic 的观点相同,认为它超越了在提供商方面拥有 PACT 的目的。PACT 的主要目的是验证您作为提供商的服务器是否按照协议(PACT) 工作。因此,在我看来,将 PACT 用作CONTRACT的正确方法是在完全部署的服务器上运行它,并使用 @State 来“准备”服务器(数据库、启动应用程序等)

无论如何,如果您使用的是 Spring,您可能可以查看此示例以使用 Pact 和 MockMvc

https://github.com/DiUS/pact-jvm/tree/master/pact-jvm-provider-spring

于 2017-07-25T13:17:25.387 回答
1

Pact-JVM 现在支持 Spring mockmvc 测试来验证 Spring 或 Springboot 提供程序。见https://github.com/DiUS/pact-jvm/tree/master/pact-jvm-provider-spring

于 2017-10-05T02:00:25.657 回答
1

好吧,如果您不针对您的 Provider 测试您的合同,就会失去合同测试的全部意义,因为您的合同没有针对双方进行测试。因为主要的一点是消费者决定了提供者的行为方式,并且在您的情况下,您希望使用 mockMvc 绕过提供者,并且只针对您的消费者而不是提供者进行合同测试是没有意义的。即使您的 Provider 是一个单体应用程序,最好先运行它并使用合约进行测试,然后再运行所有微服务以进行端到端测试。

于 2017-07-24T06:46:33.153 回答