node-egg-z

1.5.17 • Public • Published

egg-mock

Mock library for testing Egg applications, plugins and custom Egg frameworks with ease. egg-mock inherits all APIs from node_modules/mm, offering more flexibility.

install

  • npm i egg-moc

$ srcUtilsOauth

module.exports = app => {
  const { router, controller } = app;
  router.get('/', controller.home.index);
  router.post('/api/login', controller.login.login);
  router.post('/api/registry', controller.login.registry);
  // 码
  router.get('/api/captcha', controller.login.captcha);
  // 上
  router.post('/upload', controller.login.upload);
  // 第三
  router.get('/getuser', controller.login.getuser);

  router.get("/api/page", controller.login.page);
  router.resources('home', '/api/home', controller.home);
};

Retrieve Agent instance through app.agent after mm.app started.

Using mm.cluster launch cluster server, you can use the same API as mm.app;

$ Test Application

  • baseDir is optional that is process.cwd() by default.
// app/service/home
    async showList(id) {
        return await this.app.mysql.get('talist', { id });
    }
    async pageList(pageNum, pageSize) {
        const createindex = (pageNum - 1) * pageSize;
        const count = await this.app.mysql.query(`select * count(*) from talist`);
        const res = await this.app.mysql.query(`select * from talist ${createindex},${pageSize}`);
        return {
            total: count[0]['count(*)'],
            data: res
        }
    }

If eggPlugin.name is defined in package.json, it's a plugin that will be loaded to plugin list automatically.

$ Test Plugin

mm.app(options) Create a mock application.

mm.cluster(options) Create a mock cluster server, but you can't use API in application, you should test using supertest. Environment list https://github.com/eggjs/egg-core/blob/master/lib/loader/egg_loader.js#L82

mm.consoleLevel(level) Mock level that print to stdout/stderr

var jwt = require('jsonwebtoken');
const withRouter = ['/api/login', '/api/registry', '/api/captcha', '/getuser', '/upload'];

module.exports = () => {
    return async (ctx, next) => {
        if (withRouter.includes(ctx.path)) {
            await next();
        } else {
            const token = ctx.request.headers.token;
            if (!token) {
                ctx.body = {
                    code: 404,
                    msg: "没有权限",
                }
                ctx.status = 401;
                return;
            }
            try {
                var decoded = jwt.verify(token, 'shhhhh');
                console.log(decoded);
                await next();
            } catch (error) {
                if (error.name === "TokenExpiredError") {
                    ctx.body = {
                        code: 500,
                        msg: "token验证过期"
                    }
                } else {
                    ctx.body = {
                        code: 505,
                        msg: "token验证失败"
                    }
                }
            }
        }
    };
};

$ Questions & Suggestions

Please open an issue here.

License

Readme

Keywords

none

Package Sidebar

Install

npm i node-egg-z

Weekly Downloads

0

Version

1.5.17

License

ISC

Unpacked Size

3.47 kB

Total Files

3

Last publish

Collaborators

  • ghjk