介紹基于ThinkPHP6的注解路由+自動接口文檔生成+自動Mock測試數據生成

下面由thinkphp框架教程欄目給大家介紹基于 thinkphp6 的注解路由 + 自動接口文檔生成 + 自動mock測試數據生成,希望對需要的朋友有所幫助!

基于 ThinkPHP6 的注解路由 + 自動接口文檔生成 + 自動測試數據生成

作者

zsw zswemail@qqcom主頁 ?https://zsw.inkgithub ?https://github.com/iszsw/mockgitee ?https://gitee.com/iszsw/mock

使用

1、安裝

composer require iszsw/mock:dev-master

2、添加測試代碼 在 app/controller 目錄下增加Test.php文件

<?php namespace appcontroller;  use appBaseController; use iszswmockannotationillustrateAutoValidate; use iszswmockannotationillustrateRoute; use iszswmockannotationillustrateMock; use iszswmockannotationillustrateMockPack; use iszswmockannotationillustrateWikiItem; use iszswmockannotationillustrateWikiMenu;  /**  * @WikiMenu("測試")  * @package appcontroller  * Author: zsw zswemail@qq.com  */ class Test extends BaseController {      /**      * @Route("test", method="GET")      * @WikiItem("首頁", description="首頁詳情")      *      * @AutoValidate({"username":"require|chsAlpha"}, message={"username":"請輸入用戶名"})      * @Mock("username", mode="request", title="用戶名", example="name")      * @Mock("name", mode="response", title="名字", example="name", description="文章ID")      */     public function index($username){         return "hello " . $username;     }      /**      * @Route("mock", method="GET")      * @WikiItem("詳情", description="文章詳情")      *      * @Mock("id", title="ID", example="numberBetween", description="文章ID")      * @MockPack("articles", mode="response", title="文章列表", description="文章列表", limit=5)      * @Mock("id", mode="response", title="ID", example="randomDigitNotNull", description="文章ID")      * @Mock("title", mode="response", title="標題", example="name")      * @Mock("create_time", mode="response", title="創建時間", example={"date": {"Y-m-d", "now"}})      * @Mock("content", mode="response", title="內容", example={"sentence": 10})      * @Mock("image", mode="response", title="圖片", example="randomDigit")      * @MockPack("user", main=true, mode="response", title="用戶", description="發布者信息", limit=0)      * @Mock("username", mode="response", title="用戶名", example="name")      * @MockPack("user")      * @MockPack("articles")      * @Mock("page", mode="response", title="頁碼", example="randomDigitNotNull", description="當前頁碼")      */     public function mock(){} }

3、復制文檔資源文件 vendor/iszsw/mock/src/Static 文件夾放置到public下

<br>如果路徑不不是 /static 可以在config/mock.php配置文件中修改

4、 訪問

注解路由:/test?username=zsw  測試數據:/mock?mock=1  接口文檔:/wiki

功能說明

配置文件 config/mock.php

1、注解路由

路由注解 模型注解 自動注入同Tp6官方注解

新增AutoValidate注解

@AutoValidate({"username":"require|chsAlpha"}, message={"username":"請輸入用戶名"})

2、接口測試數據生成

MockPack 嵌套數據生成支持無限級嵌套

@MockPack extends MockBase     // 數據長度 0表示單層數據     @var int limit           /*      * 置頂 (limit > 1 時有效)      * false:['fields'=>[["a"=>"b"], ["aa"=>"bb"]]]      * true:[["a"=>"b"], ["aa"=>"bb"]]      */     @var boolean main

例:

/**  * @MockPack("articles", mode="response", title="文章列表", description="文章列表", limit=3)  * @Mock("title", mode="response", title="標題", example="name")  * @Mock("content", mode="response", title="內容", example={"sentence": 10})  *  * @MockPack("user", main=true, mode="response", title="用戶", description="發布者信息", limit=0)  * @Mock("username", mode="response", title="用戶名", example="name")  * @MockPack("user")  *   * @MockPack("articles")  */   生成結果  {     "articles": [{         "title": "喬陽",         "content": "Vero impedit et consequatur quasi doloribus dolores illum sit expedita doloremque fugiat esse deleniti quisquam.",         "user": {             "username": "方建明"         }     }, {         "title": "蒙桂花",         "content": "Iure explicabo officiis minima et impedit sunt dignissimos necessitatibus ratione animi nam aperiam dolorum.",         "user": {             "username": "谷致遠"         }     }, {         "title": "鄭文",         "content": "Minus cum unde exercitationem sunt laudantium eveniet voluptatem magni ut cum non.",         "user": {             "username": "寧麗娟"         }     }] }

Mock 數據生成

@Mock extends MockBase     /**       * 自定義字符串 example="zsw"       * Faker方法名 參考https://github.com/fzaninotto/Faker       * 自定義方法名 applogicMock::name       * example="方法名" || example={"方法名": {"參數1", "參數2"}}       */     @var string|array example

3、接口文檔生成

<?php /**  * @WikiMenu("測試")  */ class Test extends BaseController {     /**      * @Route("test", method="GET")      * @WikiItem("首頁", description="首頁詳情")      * @Mock("name", mode="response", title="名字", example="name", description="名字")      */     public function index(){         return "zsw";     } }

使用參考

1、注解路由

2、接口測試數據生成

<?php namespace appcontroller;  use appBaseController; use iszswmockannotationillustrateRoute; use iszswmockannotationillustrateMock; use iszswmockannotationillustrateMockPack; use iszswmockannotationillustrateWikiItem; use iszswmockannotationillustrateWikiMenu;  /**  * @WikiMenu("測試")  */ class Test extends BaseController {     /**      * @Route("mock", method="GET")      * @WikiItem("詳情", description="文章詳情")      * @Mock("id", title="ID", example="numberBetween", description="文章ID")      *       * @MockPack("articles", mode="response", title="文章列表", description="文章列表", limit=3)      * @Mock("title", mode="response", title="標題", example="name")      * @Mock("content", mode="response", title="內容", example={"sentence": 10})      *      * @MockPack("user", main=true, mode="response", title="用戶", description="發布者信息", limit=0)      * @Mock("username", mode="response", title="用戶名", example="name")      * @MockPack("user")      *       * @MockPack("articles")      */     public function mock(){} }

生成的數據格式為

立即學習PHP免費學習筆記(深入)”;

{     "articles": [{         "title": "喬陽",         "content": "Vero impedit et consequatur quasi doloribus dolores illum sit expedita doloremque fugiat esse deleniti quisquam.",         "user": {             "username": "方建明"         }     }, {         "title": "蒙桂花",         "content": "Iure explicabo officiis minima et impedit sunt dignissimos necessitatibus ratione animi nam aperiam dolorum.",         "user": {             "username": "谷致遠"         }     }, {         "title": "鄭文",         "content": "Minus cum unde exercitationem sunt laudantium eveniet voluptatem magni ut cum non.",         "user": {             "username": "寧麗娟"         }     }] }

3、接口文檔生成

<?php namespace appcontroller;  use iszswmockannotationillustrateRoute; use iszswmockannotationillustrateWikiItem; use iszswmockannotationillustrateWikiMenu;  /**  * @WikiMenu("測試")  */ class Test {      /**      * @Route("test", method="GET")      * @WikiItem("首頁", description="首頁詳情")      * @Mock("username", mode="request", title="用戶名", example="name")      * @Mock("name", mode="response", title="名字", example={"appcontrollerMock::name": {100}}, description="文章ID")      */     public function index($username){} }

介紹基于ThinkPHP6的注解路由+自動接口文檔生成+自動Mock測試數據生成介紹基于ThinkPHP6的注解路由+自動接口文檔生成+自動Mock測試數據生成

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享