Skip to content

thinkjs/think-mock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

think-mock

Mock data for ThinkJS3.

Precondition

think-mock need Babel support! For:

  • @babel/plugin-proposal-class-properties
  • @babel/plugin-proposal-decorators

is used!Replace them with corresponding plugin if babel6 is used in your project!

  1. Open Babel transform (Both development or production enviroment)
  2. Add plugin to babel config

How to Use

  1. Add extend support
// think.ROOT_PATH/src/config/extend.js 
const mock = require('think-mock');

module.exports = [
  mock(think.app),
];
  1. Config mock path, or use default
  // config.js
  mock: path.join(think.ROOT_PATH, 'mock'), // default
  1. Create mock file
  // think.ROOT_PATH/mock/user/index.js
  module.exports = {
    mock: 'This is mock data.'
  }
  1. Add mock to action or method
// controller/user.js
const { mock } = think.Controller.prototype;
module.exports = class extends think.Controller {
  @mock
  indexAction() {
    // mockFile think.ROOT_PATH/mock/user/index.js
    return this.json({ data: 'This is real data.' });
  }

  @mock getUserInfo() {
    // mockFile think.ROOT_PATH/mock/user/getUserInfo.js
  }
}

// service/sms.js
const { mock } = think.Service.prototype;
module.exports = class extends think.Service {
  @mock
  sendMessage() {
    // mockFile think.ROOT_PATH/mock/service/sms/sendMessage.js
    return { data: 'This is real data.' };
  }
};

Production

Mock auto close when you are not at devlepment enviroment.

You don't need remove decorator mock, but is better if you do.