egg-mock
Version:
mock server for egg
34 lines (30 loc) • 1.02 kB
JavaScript
;
module.exports = app => {
const customLoader = app.config.customLoader;
if (!customLoader) return;
for (const field of Object.keys(customLoader)) {
const loaderConfig = Object.assign({}, customLoader[field]);
loaderConfig.field = field;
addMethod(loaderConfig);
}
function addMethod(loaderConfig) {
const field = loaderConfig.field;
const appMethodName = 'mock' + field.replace(/^[a-z]/i, s => s.toUpperCase());
if (app[appMethodName]) {
app.coreLogger.warn('Can\'t override app.%s', appMethodName);
return;
}
app[appMethodName] = function(service, methodName, fn) {
if (typeof service === 'string') {
const arr = service.split('.');
service = loaderConfig.inject === 'ctx' ? this[field + 'Classes'] : this[field];
for (const key of arr) {
service = service[key];
}
service = service.prototype || service;
}
this._mockFn(service, methodName, fn);
return this;
};
}
};