为以下功能编写单元测试用例- node.js

Write Unit test case for below function- node.js

我创建了一个函数,需要测试它 文件 name-abc.js:

a: function (cb) {
  return function (err, res) {
    if (err) return cb(err);
    return cb(null, res);
  };
},

文件名-abc_test.js

describe('test function,()=>{
    it('test',(done)=>{
      // HOW TO TEST THE ABOVE FUNCTION.. WHAT ARGUMENTS SHOULD BE PASSES AS CALLBACK 
      })
    })

调用此函数时我应该传递什么参数以及我应该断言什么值。

您可以使用 Node.js 的 assert 作为断言库。并且,为 callback 函数创建模拟或存根,将其传递给 obj.a() 方法。最后,断言如果 callback 函数要使用正确的参数调用。

例如

name-abc.js:

const obj = {
  a: function (cb) {
    return function (err, res) {
      if (err) return cb(err);
      return cb(null, res);
    };
  },
};

module.exports = obj;

name-abc.test.js:

const obj = require('./name-abc');
const assert = require('assert');

describe('66636577', () => {
  it('should handle error', () => {
    const callArgs = [];
    const mCallback = (err, res) => {
      callArgs.push([err, res]);
    };
    const mError = new Error('network');
    obj.a(mCallback)(mError);
    assert(callArgs[0][0] === mError && callArgs[0][1] === undefined, 'expect callback to be called with error');
  });

  it('should success', () => {
    const callArgs = [];
    const mCallback = (err, res) => {
      callArgs.push([err, res]);
    };
    const mRes = 'teresa teng';
    obj.a(mCallback)(null, mRes);
    assert(callArgs[0][0] === null && callArgs[0][1] === 'teresa teng', 'expect callback to be called with response');
  });
});

单元测试结果:

  66636577
    ✓ should handle error
    ✓ should success


  2 passing (4ms)

-------------|---------|----------|---------|---------|-------------------
File         | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
-------------|---------|----------|---------|---------|-------------------
All files    |     100 |      100 |     100 |     100 |                   
 name-abc.js |     100 |      100 |     100 |     100 |                   
-------------|---------|----------|---------|---------|-------------------