繁体   English   中英

使用 mocha 在 nodejs 中模拟一个函数

[英]mock a function in nodejs using mocha

我第一次使用 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);
};

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 |                   
--------------------------|---------|----------|---------|---------|-------------------

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM