← 中文资源

简体中文版本

用 Pact 的契约测试工作流

由消费方为期望交互写契约并发布到 broker,提供方据契约验证,破坏性变更使提供方构建失败。

阅读英文原文

消费方拥有契约

消费方知道自己需要什么,故由其写 pact。提供方据之验证。破坏消费方期望的提供方变更使提供方构建失败,而非消费方。

new Interaction()
  .uponReceiving('a request for a user')
  .withRequest({ method: 'GET', path: '/users/1' })
  .willRespondWith({ status: 200, body: { id: 1 } });

发布并验证

消费方 CI 把 pact 发布到 broker。提供方 CI 拉取并验证。broker 是汇合点,双方不直接对话。

pact-broker can-i-deploy --pacticipant consumer --version $VERSION

仅兼容时部署

任一方部署前跑 can-i-deploy,未验证兼容即阻断部署。用生产版本打标 broker,回滚时对正确 pact 验证。

验证

破坏性变更使提供方构建失败,can-i-deploy 阻断不兼容部署,broker 显示已验证矩阵。每次提供方构建都验证而非定时,使失败落在合并前。旧 pact 版本按保留策略归档。