1.0.0 • Published 5 years ago

@fedore/mocker v1.0.0

Weekly downloads
1
License
ISC
Repository
-
Last release
5 years ago

@Fedore/Mocker

基于 Koa.js 与 Mock.js 的 JSON Mock 服务器

目录

使用指南

安装

  • 使用 npm
npm install --save koa @fedore/mocker
  • 使用 yarn
yarn add koa @fedore/mocker

完整的用例与参数说明

示例代码

const { Mocker } = require('@fedore/mocker');
const Koa = require('koa');

const mocker = new Mocker({
  prefix: '/api'
});

mocker.mock({
  path: '/demo',
  mock: {
    'list|10': [
      {
        'id|+1': 1,
        'name|+1': ['foo', 'bar', 'baz']
      }
    ]
  }
});

const app = new Koa();

app.use(mocker.routes());
app.listen(3000);

使用 node 运行上述 js 代码,并访问 http://localhost:3000/api/demo 即可查看效果

构造函数参数说明

参数名类型默认值必填说明
prefixstring空字符串该实例所有mock接口前缀

mock() 参数说明

mocker.mock() 方法可以创建一个 mock 接口,以下是参数说明:

参数名类型默认值必填说明
pathstringmock 接口路径
methodstringgetmock 接口的HTTP方法,不区分大小写
mockObject 或 Functionmock 接口内容定义,或提供一个返回 Mock 定义的回调函数,具体格式请参照 Mock.js 语法规范
middlewaresArray<Function>[]Koa 中间件数组,数组内的所有中间件仅对path参数指定的路径生效

其他用例

使用回调定义接口

mocker.mock({
  path: '/demo/:name',
  mock(ctx) {
    return {
      "message": `hello, ${ctx.params.name}`
    }
  }
});
// http://localhost:3000/api/demo/bob

{
  "message": "hello, bob"
}

使用中间件

mocker.mock({
  path: '/demo',
  mock: {
    "list|2": [{
      "id|+1": 1
    }]
  },
  middlewares: [
    async function(ctx, next) {
      await next();
      ctx.set('Access-Control-Allow-Origin', '*');
    }
  ]
});
// Access-Control-Allow-Origin: *
// http://localhost:3000/api/demo

{
  "list": [
    {
      "id": 1
    },
    {
      "id": 2
    }
  ]
}

从目录中导入接口定义

  • /index.js
const { Mocker } = require('@fedore/mocker');
const Koa = require('koa');
const path = require('path');

const mocker = new Mocker({
  prefix: '/api'
});

mocker.loadDir(path.join(process.cwd(), 'mocks'));

const app = new Koa();

app.use(mocker.routes());
app.listen(3000);
  • /mocks/demo.js
module.exports = {
  path: '/demo',
  mock: {
    message: 'Hello World'
  }
}
  • 浏览器
// http://localhost:3000/api/demo

{
  "message": "Hello World"
}
  • loadDir 参数说明
参数位置参数名类型默认值必填说明
1pathstring目录路径
2deepbooleantrue是否遍历子文件夹
3encodingstringutf8编码