每个端点的PACT合约测试

时间:2019-03-21 21:45:00

标签: testing pact

您好,我对使用PACT进行合同测试进行了一些初步研究。在我使用契约经纪人托管契约的范式中,我从较高的角度了解到,需要在消费者端进行合同测试,对契约模拟服务器运行一组测试……然后发布给契约经纪人。提供者还需要一个合同,在合同中,它将使用消费者在契约经纪人上创建的契约来运行其测试。

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

2 个答案:

答案 0 :(得分:1)

如果按端点表示不同域上的不同API,那么是。

契约的概念是在任何一对消费者/提供者之间进行交互。举例来说,如果您有一个前端SPA(使用者)使用两个不同的API(提供者),例如身份验证api(即auth.yourdomain.com)和数据API(例如data.yourdomain.com),则您会希望将前端和身份验证API之间的交互记录为一个合同,而将前端和数据API之间的另一个合同记录为

这些合同中的每一个都会有至少一个交互,但是可能会有很多交互,例如,当您在身份验证API的根目录上执行GET请求时,如果您使用/ auth在/ auth上进行POST,则它将返回X。正文中的用户名/密码,返回Y,依此类推。

这有意义吗?

答案 1 :(得分:1)

简短的答案是肯定的。

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

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

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

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

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