【问题标题】:How to unit test sails built in model methods?如何对模型方法中内置的风帆进行单元测试?
【发布时间】:2020-05-29 21:22:57
【问题描述】:

我有一个名为 User insails 的模型。 假设我有以下控制器:

module.exports = {

    register: async function(req, res) {

        var record = await User.create({
            username: 'kevin chuka'
        });

    }

};

我想存根 User.create() 以便在测试中返回 true。 重要提示: 在测试之前提升风帆不是一种选择,因为在这种情况下,它不会是一个单元测试,而且在提升风帆时,它会与我的大多数其他单元测试相混淆。写好了。

【问题讨论】:

    标签: node.js unit-testing sails.js sinon waterline


    【解决方案1】:

    这里是单元测试解决方案:

    controller.js:

    const User = require('./user');
    
    module.exports = {
      register: async function(req, res) {
        var record = await User.create({
          username: 'kevin chuka',
        });
        return record;
      },
    };
    

    user.js:

    class User {
      static async create() {
        return 'real user';
      }
    }
    
    module.exports = User;
    

    controller.test.js:

    const sinon = require('sinon');
    const User = require('./user');
    const controller = require('./controller');
    const { expect } = require('chai');
    describe('60220190', () => {
      it('should create and return user', async () => {
        sinon.stub(User, 'create').resolves(true);
        const actual = await controller.register();
        expect(actual).to.be.eq(true);
        sinon.assert.calledWithExactly(User.create, { username: 'kevin chuka' });
      });
    });
    

    带有覆盖率报告的单元测试结果:

     60220190
        ✓ should create and return user
    
    
      1 passing (29ms)
    
    ---------------|---------|----------|---------|---------|-------------------
    File           | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
    ---------------|---------|----------|---------|---------|-------------------
    All files      |   83.33 |      100 |      50 |   83.33 |                   
     controller.js |     100 |      100 |     100 |     100 |                   
     user.js       |      50 |      100 |       0 |      50 | 3                 
    ---------------|---------|----------|---------|---------|-------------------
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-03
      • 1970-01-01
      • 2017-08-11
      相关资源
      最近更新 更多