【问题标题】:mock a function in nodejs using mocha使用 mocha 在 nodejs 中模拟一个函数
【发布时间】:2020-03-18 06:26:41
【问题描述】:

我第一次使用 mocha 为我的节点应用程序编写单元测试用例。我不清楚如何在 mocha 中模拟函数。

我添加了我的节点应用程序的功能。下面提到的功能的单元测试是什么样子的?

var authHandler = require('./authenticationHandler');

exports.postloginValues = (req, res) => {

  var realEdUsername_Update = req.body.uName;
  var encodedPassword = Buffer.from(req.body.password).toString('base64');

  var jsonData = {
    loginName : realEdUsername_Update,
    userPassword : encodedPassword
  };

  var parseData = JSON.stringify(jsonData);

  var result = authHandler.validateRealEdUser(parseData, res);
};

【问题讨论】:

    标签: javascript node.js unit-testing mocha.js sinon


    【解决方案1】:

    index.js:

    var authHandler = require('./authenticationHandler');
    
    exports.postloginValues = (req, res) => {
      var realEdUsername_Update = req.body.uName;
      var encodedPassword = Buffer.from(req.body.password).toString('base64');
    
      var jsonData = {
        loginName: realEdUsername_Update,
        userPassword: encodedPassword,
      };
    
      var parseData = JSON.stringify(jsonData);
    
      var result = authHandler.validateRealEdUser(parseData, res);
    };
    

    authenticationHandler.js:

    module.exports = {
      validateRealEdUser(parseData, res) {},
    };
    

    index.test.js:

    const { postloginValues } = require('./');
    var authHandler = require('./authenticationHandler');
    const sinon = require('sinon');
    
    describe('60734436', () => {
      it('should pass', () => {
        const validateRealEdUserStub = sinon.stub(authHandler, 'validateRealEdUser');
        const mReq = { body: { password: '123', uName: 'james' } };
        const mRes = {};
        postloginValues(mReq, mRes);
        sinon.assert.calledWithExactly(
          validateRealEdUserStub,
          JSON.stringify({ loginName: 'james', userPassword: Buffer.from(mReq.body.password).toString('base64') }),
          mRes,
        );
        validateRealEdUserStub.reset();
      });
    });
    

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

      60734436
        ✓ should pass
    
    
      1 passing (8ms)
    
    --------------------------|---------|----------|---------|---------|-------------------
    File                      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
    --------------------------|---------|----------|---------|---------|-------------------
    All files                 |     100 |      100 |      50 |     100 |                   
     authenticationHandler.js |     100 |      100 |       0 |     100 |                   
     index.js                 |     100 |      100 |     100 |     100 |                   
    --------------------------|---------|----------|---------|---------|-------------------
    

    【讨论】:

      猜你喜欢
      • 2019-03-08
      • 1970-01-01
      • 2019-04-19
      • 2013-06-01
      • 2015-12-16
      • 2018-01-21
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      相关资源
      最近更新 更多