zsw zswemail@qqcom主頁 https://zsw.inkphp
github https://github.com/iszsw/mockgit
gitee https://gitee.com/iszsw/mockgithub
一、安裝
composer require iszsw/mock:dev-master
json
二、添加測試代碼 在 app/controller 目錄下增長Test.php文件
<?php namespace app\controller; use app\BaseController; use iszsw\mock\annotation\illustrate\AutoValidate; use iszsw\mock\annotation\illustrate\Route; use iszsw\mock\annotation\illustrate\Mock; use iszsw\mock\annotation\illustrate\MockPack; use iszsw\mock\annotation\illustrate\WikiItem; use iszsw\mock\annotation\illustrate\WikiMenu; /** * @WikiMenu("測試") * @package app\controller * 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(){} }
三、複製文檔資源文件 vendor/iszsw/mock/src/static 文件夾放置到public下
<br>若是路徑不不是 /static 能夠在config/mock.php配置文件中修改
四、 訪問
註解路由:/test?username=zsw 測試數據:/mock?mock=1 接口文檔:/wiki
配置文件 config/mock.php
路由註解 模型註解 自動注入同Tp6官方註解新增AutoValidate註解app
@AutoValidate({"username":"require|chsAlpha"}, message={"username":"請輸入用戶名"})
MockPack 嵌套數據生成支持無限級嵌套
@MockPack extends MockBase // 數據長度 0表示單層數據 @var int limit /* * 置頂 (limit > 1 時有效) * false:['fields'=>[["a"=>"b"], ["aa"=>"bb"]]] * true:[["a"=>"b"], ["aa"=>"bb"]] */ @var boolean main
例:composer
/** * @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 * 自定義方法名 \app\logic\Mock::name * example="方法名" || example={"方法名": {"參數1", "參數2"}} */ @var string|array example
<?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"; } }
<?php namespace app\controller; use app\BaseController; use iszsw\mock\annotation\illustrate\Route; use iszsw\mock\annotation\illustrate\Mock; use iszsw\mock\annotation\illustrate\MockPack; use iszsw\mock\annotation\illustrate\WikiItem; use iszsw\mock\annotation\illustrate\WikiMenu; /** * @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(){} }
生成的數據格式爲dom
{ "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": "寧麗娟" } }] }
<?php namespace app\controller; use iszsw\mock\annotation\illustrate\Route; use iszsw\mock\annotation\illustrate\WikiItem; use iszsw\mock\annotation\illustrate\WikiMenu; /** * @WikiMenu("測試") */ class Test { /** * @Route("test", method="GET") * @WikiItem("首頁", description="首頁詳情") * @Mock("username", mode="request", title="用戶名", example="name") * @Mock("name", mode="response", title="名字", example={"\app\controller\Mock::name": {100}}, description="文章ID") */ public function index($username){} }