每个端点的PACT合同测试

问题描述 投票:0回答:2

您喜欢使用PACT进行合同测试的初步研究。在我使用pact代理来托管契约的范例中,我从高层理解,需要在消费者方面进行合同测试,该测试针对pact模拟服务器运行一组测试...然后发布到协议经纪人。提供者还需要一个合同,在该合同中,它使用pact代理上的消费者创建的协议来运行其测试。

我的问题是:在消费者方面,是否需要为每个端点编写多个不同的测试?

testing pact
2个回答
1
投票

简短的回答是肯定的。

这取决于每个API端点的功能。但通常情况下,每个端点都可以处理不同的操作,并且根据请求,您可以确保代码可以处理它(如果它使用所有这些操作 - 这很重要)。

例如对于类似“CRUD”的服务,以下内容非常典型:

  1. 获取有效请求的/<resource>,返回200和资源正文
  2. 用一个错误的请求获取/<resource>,返回400和错误正文
  3. 在没有身份验证令牌的情况下获取/<resource>,返回401
  4. 使用有效请求POST /<resource>,返回201和资源ID /正文
  5. 删除/<resource> ......依此类推

在每个操作和资源内,可能存在多态有效载荷(请求或响应)。如果您的消费者代码必须处理此问题,那么它也应该对这些代码进行测试。

您可能会在我们的文档中找到this page对此主题有用。


1
投票

如果通过端点表示不同域上的不同API,则为是。

协议的概念是在任何一个消费者/提供者对之间进行交互。例如,如果您有一个前端SPA(使用者)使用2个不同的API(提供者),如身份验证API(即auth.yourdomain.com)和数据API(如data.yourdomain.com),我们希望将您的前端和身份验证API之间的交互记录为一个合同以及前端和数据API之间的另一个合同。

这些合同中的每一个都至少有一个交互,但可能有很多,比如说,当您在身份验证API的根目录下执行GET请求时,如果您使用用户名/密码在/ auth进行POST,则返回X在体内,它返回Y等

那有意义吗?

© www.soinside.com 2019 - 2024. All rights reserved.