think-mock

Mock for ThinkJS3

Usage no npm install needed!

<script type="module">
  import thinkMock from 'https://cdn.skypack.dev/think-mock';
</script>

README

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.