基于 ThinkPHP6 的注解路由 + 自动接口文档生成 + 自动测试数据生成
作者
zsw zswemail@qqcom
使用
1、安装
composer require iszsw/mock:dev-master
2、添加测试代码 在 app/controller 目录下增加Test.php文件
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
* 自定义方法名 \app\logic\Mock::name
* example="方法名" || example={"方法名": {"参数1", "参数2"}}
*/
@var string|array example
3、接口文档生成
使用参考
1、注解路由
2、接口测试数据生成
生成的数据格式为
{
"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、接口文档生成