您喜欢使用PACT进行合同测试的初步研究。在我使用pact代理来托管契约的范例中,我从高层理解,需要在消费者方面进行合同测试,该测试针对pact模拟服务器运行一组测试...然后发布到协议经纪人。提供者还需要一个合同,在该合同中,它使用pact代理上的消费者创建的协议来运行其测试。
我的问题是:在消费者方面,是否需要为每个端点编写多个不同的测试?
简短的回答是肯定的。
这取决于每个API端点的功能。但通常情况下,每个端点都可以处理不同的操作,并且根据请求,您可以确保代码可以处理它(如果它使用所有这些操作 - 这很重要)。
例如对于类似“CRUD”的服务,以下内容非常典型:
/<resource>
,返回200
和资源正文/<resource>
,返回400
和错误正文/<resource>
,返回401
/<resource>
,返回201
和资源ID /正文/<resource>
......依此类推在每个操作和资源内,可能存在多态有效载荷(请求或响应)。如果您的消费者代码必须处理此问题,那么它也应该对这些代码进行测试。
您可能会在我们的文档中找到this page对此主题有用。
如果通过端点表示不同域上的不同API,则为是。
协议的概念是在任何一个消费者/提供者对之间进行交互。例如,如果您有一个前端SPA(使用者)使用2个不同的API(提供者),如身份验证API(即auth.yourdomain.com)和数据API(如data.yourdomain.com),我们希望将您的前端和身份验证API之间的交互记录为一个合同以及前端和数据API之间的另一个合同。
这些合同中的每一个都至少有一个交互,但可能有很多,比如说,当您在身份验证API的根目录下执行GET请求时,如果您使用用户名/密码在/ auth进行POST,则返回X在体内,它返回Y等
那有意义吗?