@foxman/plugin-mock-control
v1.2.3
Published
> 扩展 Foxman 基础的 Mock 方式
Downloads
8
Readme
MockControl
扩展 Foxman 基础的 Mock 方式
插件作用
Foxman 基础的 Mock 方式,是返回静态的 json。但是,我们终究会遇到一些特殊的需求:
- 根据请求对响应数据进行定制;
- 模拟请求超时
- Mock 文件下载功能
- JSONP 等其他非 JSON 格式的 异步数据响应
而这个插件的作用,就是扩展 Foxman 的 Mock 数据加工的能力。
DEMO 演示
$ git clone https://github.com/kaola-fed/foxman/
$ cd packages/foxman-plugin-mockcontrol/example/
$ npm i # 无梯子用户推荐 cnpm
$ npm start
⚠️ 以上都是本地链接
如何引入
- cd
path/to/project
(已启用 foxman 的工程) npm i --save-dev @foxman/plugin-mock-control
- 在
foxman.config.js
中新增 plugins 的配置项
const MockControl = require('@foxman/plugin-mock-control');
module.exports = {
...
plugins: [
new MockControl({
mapJS: function (dataPath) { // (mockDATA) => mockJS
return dataPath.replace(/\.json$/, '.js');
}
})
],
...
}
- mapJS - 从 Mock Data 文件到 Mock JS 文件的映射方式,缺省为与
.json
同名.js
文件
Mock JS 能力说明
- this 指向 koa 当前请求的 context
module.exports = function () {
console.log(this);
}
- 第一个参数为 mock 数据
module.exports = function (data) {
console.log('data', data);
}
- 当方法体含 return 语句时,会将 return 的对象用于后续的页面渲染
module.exports = function (data) {
return data;
}
- 当方法体不含 return 语句,则不再执行后续中间件。此时,可以指定
this.body
module.exports = function (data) {
this.body = 'without return.'
}
- 支持
generator
,用于处理异步的场景
module.exports = function * (data) {
yield new Promise((resolve) => {
setTimeout(resolve, 3000);
});
return data;
}