之前的一个项目改架构变成微服务,也引入了 mock 和 CDT,我的浅显理解是:
- CDT 的目的很明确,是为了监督 provider 不要随便更改 API(参数以及类型),他也只验证 API 的定义而已。CDT 的 pact 由 consumer 提供,跑在 provider 端(我们的项目是在 CI/CD 里跑,如果不通过,provider 是不能 check in 的),那么如果 provider 要变更 API,必须和 consumer 协商,然后 consumer 更新 pact,然后 provide 才能提交更改。
- 而微服务要单独测试,要测试跟别的服务的交互的话,mock 少不了。Mock 应该是由微服务测试人员进行,不管其是 provider 还是 consumer,只要需要测到跟其他微服务的集成,就需要进行 mock,目的是为了测试自己的微服务的各项功能的。