每个端点的 PACT 合同测试
PACT contract tests per endpoint
您好,您正在使用 PACT 进行有关合同测试的一些初步研究。在我使用契约代理来托管契约的范例中,我从高层次理解需要在消费者端进行契约测试,运行 是针对契约模拟服务器的一组测试。 .. 然后将其发布给契约经纪人。提供者还需要一个合约,在合约中它使用消费者在合约代理上创建的合约来 运行 它的测试。
我的问题是:在消费者端,是否需要为每个端点编写多个不同的测试?
如果您所说的端点是指不同域上的不同 API,那么是的。
契约的概念是在任何一对 consumer/provider 之间进行交互。例如,如果您有一个前端 SPA(消费者)使用 2 个不同的 APIs(提供者),例如身份验证 api(即 auth.yourdomain.com)和数据 API(如 data.yourdomain.com),您需要将前端与身份验证 API 之间的交互记录为前端与数据 API 之间的一个合同和另一个合同。
这些合约中的每一个都会有至少一次交互,但也可能有很多次交互,比如,当您在身份验证 API 的根目录下执行 GET 请求时,它 returns X,如果你在 /auth 中使用正文中的 username/password 执行 POST,它 returns Y 等
这有意义吗?
简短的回答是肯定的。
这取决于每个 API 端点的作用。但通常情况下,每个端点都可以处理不同的操作,并且根据请求,您需要确保您的代码可以处理它(如果它使用所有这些操作——这很重要)。
例如以下是 "CRUD" 类服务的典型情况:
- GET
/<resource>
有效请求,return 200
和资源主体
- GET
/<resource>
请求错误,return 一个 400
和一个错误正文
- GET
/<resource>
没有身份验证令牌,return 401
- POST
/<resource>
具有有效请求,return 201
和资源 ID / 主体
- 删除
/<resource>
...等等
在每个操作和资源中,可能存在多态负载(请求或响应)。如果您的消费者代码必须处理这个问题,它也应该对这些进行测试。
您可能会发现 this page 在我们的文档中对这个主题很有用。
您好,您正在使用 PACT 进行有关合同测试的一些初步研究。在我使用契约代理来托管契约的范例中,我从高层次理解需要在消费者端进行契约测试,运行 是针对契约模拟服务器的一组测试。 .. 然后将其发布给契约经纪人。提供者还需要一个合约,在合约中它使用消费者在合约代理上创建的合约来 运行 它的测试。
我的问题是:在消费者端,是否需要为每个端点编写多个不同的测试?
如果您所说的端点是指不同域上的不同 API,那么是的。
契约的概念是在任何一对 consumer/provider 之间进行交互。例如,如果您有一个前端 SPA(消费者)使用 2 个不同的 APIs(提供者),例如身份验证 api(即 auth.yourdomain.com)和数据 API(如 data.yourdomain.com),您需要将前端与身份验证 API 之间的交互记录为前端与数据 API 之间的一个合同和另一个合同。
这些合约中的每一个都会有至少一次交互,但也可能有很多次交互,比如,当您在身份验证 API 的根目录下执行 GET 请求时,它 returns X,如果你在 /auth 中使用正文中的 username/password 执行 POST,它 returns Y 等
这有意义吗?
简短的回答是肯定的。
这取决于每个 API 端点的作用。但通常情况下,每个端点都可以处理不同的操作,并且根据请求,您需要确保您的代码可以处理它(如果它使用所有这些操作——这很重要)。
例如以下是 "CRUD" 类服务的典型情况:
- GET
/<resource>
有效请求,return200
和资源主体 - GET
/<resource>
请求错误,return 一个400
和一个错误正文 - GET
/<resource>
没有身份验证令牌,return401
- POST
/<resource>
具有有效请求,return201
和资源 ID / 主体 - 删除
/<resource>
...等等
在每个操作和资源中,可能存在多态负载(请求或响应)。如果您的消费者代码必须处理这个问题,它也应该对这些进行测试。
您可能会发现 this page 在我们的文档中对这个主题很有用。