proxymock-cli
Version:
proxymock-cli
84 lines (62 loc) • 2.38 kB
Markdown
# proxymock-cli
proxymock-cli
## how to use?
* 安装 `yarn global add proxymock-li` 或 `npm install proxymock-cli -g`
* 执行 `proxymock -d <mock data directory> [-s] [-l <log level>]`
```
-d: mock数据文件存放目录, <必填>
-s: 是否设置系统代理为proxymock代理服务器的ip和端口, [选填]
-l: 日志级别, 默认级别`info`, 可选级别项: `debug`、`inf`o、`warn`、`error`, [选填]
```
* 日志打印目录为操作系统登录用户目录下的`.proxymock`文件夹, windows系统如 `C:\Users\your-pc-name\.proxymock`
## mock文件指令规则
* 以单行注释语法 `//` 作为mock文件规则的指令, 指令不支持多行注释语法 `/**/`
* `// proxymock: [^] <GET|POST|PUT|DELETE> <url>` 此指令必选; 指令中`<>`表示必填, `[]`表示选填, `|`表示多选一
* `// proxymock-disable: [true|false]` 此指令可选
* `<url>` 部分支持正则表达式
## mock文件示例
```
// proxymock: ^ GET https://weather.qq.com/api/shanghai.do
// proxymock-disable: false
module.exports = {
desc: '艳阳当空、烈日炎炎',
temperature: 38,
feeling: 'hot'
}
```
```
// proxymock: GET http://www.weather.cn/api
/**
* req: 可用 { query, params, body, header } 等参数作为条件导出不同mock数据
* res: 可用 .json(), .end() 等方法回传mock数据
*/
module.exports = async function(req, res, rawData) {
await new Promise(resolve => setTimeout(() => resolve(), 3000)); // 模拟请求延迟3秒
if (req.query.type === 'hot') {
return {
desc: '艳阳当空、烈日炎炎',
temperature: 38,
feeling: 'hot'
};
}
if (req.query.type === 'cold') {
res.json({
desc: '大雪纷飞、寒风刺骨',
temperature: -25,
feeling: 'cold'
});
}
};
```
```
// proxymock: GET /weather\.[a-z]{2}\.com\/api/
// proxymock-disable: false
// 正则示例
module.exports = async function(req, res, rawData) {
return { feeling: 'cool', temperature: 22, desc: '秋高气爽' };
};
```
## 运行截图

## 参考资料
[nodejs动态加载代码](https://blog.csdn.net/qq_39807732/article/details/88087348)