我正在尝试采用契约。我理解方程式的消费者方面,它看起来非常好。但我对生产者方面感到困惑。
文档似乎主张运行提供程序应用程序,并针对正在运行的服务器验证合同。
我不喜欢这样做。首先,我需要为每个协议提供适当信息的数据库,至少可以说是痛苦的。第二,启动应用程序将是一件麻烦事 - 我提到它是一块巨石吗? - 最后,有一些POSTS会改变数据库的状态,并使测试运行变得脆弱。
我想做的是使用契约进行mockMvc样式测试。我想模拟我的服务,只测试端点,我想在这种情况下应该测试什么。
如何通过Pact实现这一目标?
答案 0 :(得分:1)
如果您没有针对您的提供商测试您的合同而失去了合同测试的全部要点,那么您的合同不会针对双方进行测试。因为要点是消费者决定提供商应该如何表现,在您的情况下,您希望使用mockMvc绕过提供商,并且没有必要仅针对您的消费者而不是提供商进行合同测试。即使您的Provider是一个整体,但运行它并使用合同进行测试仍然更好,然后运行所有微服务进行端到端测试。
答案 1 :(得分:1)
是的,你可以通过PACT实现它,但我对Cotnic有同样的看法,它胜过了在供应商方面拥有PACT的目的。 PACT的主要目的是验证您作为提供商的服务器是否按照协议(PACT)运行。因此,在我看来,将PACT用作 CONTRACT 的正确方法是在完全部署的服务器上运行它,并使用@State“准备”服务器(db,启动应用程序等)
无论如何,如果您使用Spring,您可能可以查看此示例以使用Pact与MockMvc
https://github.com/DiUS/pact-jvm/tree/master/pact-jvm-provider-spring
答案 2 :(得分:1)
Pact-JVM现在支持Spring mockmvc测试来验证Spring或Springboot提供程序。见https://github.com/DiUS/pact-jvm/tree/master/pact-jvm-provider-spring