美文网首页PHP DevPHP实战PHP经验分享
API 版本 & 自底向上的 PHP 单元测试

API 版本 & 自底向上的 PHP 单元测试

作者: michael_jia | 来源:发表于2016-12-27 23:53 被阅读226次

    产品需求对角色和终端的组合在不断变化,众多不断快速变化的 API 接口代码在产品的演进中日益成为一个问题;经过讨论分析,最终采用 Yii2 的推荐做法,即通过 modules 实现 版本管理

    最近,PHP 单元测试有进展,我们在 ShortUrlService 短链接实现思路 中不仅对内部使用的 service 进行了单元测试,对 ControllerTest 也有尝试;

    本文结合 ShortUrlService 的 ShortUrlControllerTest 以及 v1.4 的 DemandControllerTest 来示范一下;

    API 版本管理
    • 采纳 Yii2 的方案:通过 module 实现 API 版本;
      结合原来按版本部署的经验和 Los 根据需求提出的对应分拆 Yar RPC 服务的想法,我们最终采用了 Yii2 的推荐做法;
    • 我们产品需求版本 v1.4,对应 module v14,但在 url 中保持 v1.4/$controller/$action

    需求版本由两部分组成:major.minor(大版本.小版本);
    1.0, 1.1, ..., 1.9, 2.0, ..., 2.9, ...;小版本只有 0-9;

    • 可能会出现这样一个情况:同一个站点,不同页面的 ajax 请求,访问的是不同版本的 API;
    • 同时维护的版本不要超过三个;
    自底向上测试
    • 自底向上逐步构建;
    • RPC 首先应当通过测试;
    • API 基于 RPC 构建可靠服务;
    • API 接口测试应集中在自己范围内的测试用例,应当由 RPC 解决的,要放到 RPC 解决;


      自底向上逐步构建
    • 版本 API 的 URL 形如:r=v1.4/demand/c34;
    ShortUrlControllerTest
    • 这个示例纯粹是一个示例,旨在说明使用 PHPUnit 如何对 API 接口进行测试;
    • shorturl/controllers/ShortUrlControllerTest.php 示例;
    • Guzzle 是一个不错的 PHP HTTP Client,比 cURL 好用;
      ControllerTest 示例
    DemandControllerTest
    • @dataProvider 是一个很好的尝试,准备多套数据,驱动测试;
      @dataProvider 是一个好东西

    相关文章

      网友评论

      本文标题:API 版本 & 自底向上的 PHP 单元测试

      本文链接:https://www.haomeiwen.com/subject/xzievttx.html