介绍基于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文件

<?phpnamespace 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下


如果路径不不是 /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、接口测试数据生成

<?phpnamespace 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(){}}

生成的数据格式为

NameGPT名称生成器 NameGPT名称生成器

免费AI公司名称生成器,AI在线生成企业名称,注册公司名称起名大全。

NameGPT名称生成器 0 查看详情 NameGPT名称生成器

立即学习“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、接口文档生成

<?phpnamespace 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测试数据生成bffa5b683c81b7b14f0cde544a6b370.png

以上就是介绍基于ThinkPHP6的注解路由+自动接口文档生成+自动Mock测试数据生成的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/502942.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫

关于作者

上一篇 2025年11月8日 21:06:01
下一篇 2025年11月8日 21:12:14

相关推荐

发表回复

登录后才能评论
关注微信