我是一个团队的一员,为我们整个公司“开拓”协议的使用。在这次旅程中,我们面临许多问题,这些问题主要是由于误解了CDC测试协议的使用。很多问题可以随着时间的推移而得到解决,但仍有一些主要问题我无法找到任何好的解决方案或示例。由于我认为回答这些问题非常重要,我认为试图直接与您联系可能会对我们有所帮助。
"providerStates": [{
"name": "The user exists",
"params": {"id" : 123}
}]
除了西蒙的回答:
首先,我想说,你主动为你的整个公司试用Pact很棒:)
我们正在努力改进我们传达Pact的方式,因为我们知道解决这个问题并将其转发给其他开发人员并不是一个简单的问题。您可以提出任何改进文档/网站的建议,我们将不胜感激。
现在,关于问题:
在实现提供程序测试时,我们应该在应用程序的“层”实现我们的测试吗?
Pact本质上试图替换/增强集成测试,或者某些人会考虑提供者方面的功能测试。然而,对于某些公司/团队而言,这种命名法并没有真正好转,因为有些人会使用“功能”测试作为通过浏览器进行端到端测试。
从本质上讲,Pact可以替换您过去以特定方式攻击提供者的任何测试,然后验证输出,因为这基本上是Pact所做的;这样做的主要优点在于,它不是基于提供商的开发者认为那些输入/输出应该是什么,而是强调消费者实际使用它的方式。
问题:使用多个提供者状态背后的想法是什么?
正如Simon所说,多个提供者状态只是促进数据重用和防止开发人员一遍又一遍地重做样板代码的一种方式。它本质上只是一种以可重复的方式设置数据所需的方式,而不是浪费时间为每个单独的状态创建数据。话虽如此,有时您的提供商很简单,根本不需要此功能。
问题:参数化提供者状态背后的想法是什么?
参数是一种将一些可变数据注入状态的快速简便方法,如ID,交互可能需要准确检查ID是否完全相同,或者您还可以将其用于多个状态以创建特定情况,比如“使用id X创建用户”,然后“禁用ID为X的用户”。
问题:我们应如何处理有关版本控制策略的协议?
Pact提到了处理版本控制的最佳实践,即语义版本控制;它一直是理解用户是否更新其代码/依赖项,如果它是修复,添加或破坏的一种很好的方式。
但是,Pact并没有丝毫执行这一点,而是由你自己决定如何做到这一点。最后,在经纪人方面,合约只是用字符串“标记”。话虽如此,您可能想要整合您的策略,因为这不仅会影响提供商,还会影响消费者,因此需要更高程度的协作。
我希望这些回答你所有的问题。正如您所看到的,Pact对于不同的用例和策略是相当开放的,因为我们知道不是每个人都以相同的方式工作,但同时,它更加强调用户以确保他们有效地协作并设置所有人都可以使用的标准,否则它可能会变得混乱。可以说,契约给你足够的绳索让自己挂起来。
干杯,
中号