node-egg-z
v1.5.17
Published
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.
Downloads
2
Readme
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