【问题标题】:Write Unit test case for below function- node.js为以下函数-node.js 编写单元测试用例
【发布时间】:2021-06-12 15:15:51
【问题描述】:

我创建了一个函数,需要对其进行测试 档案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 
      })
    })

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

【问题讨论】:

  • 我在这个问题中没有看到任何 Java,所以我删除了 java 标记。请注意,Java 和 JavaScript 是不相关的语言。
  • 一个类或一个对象是否包含a方法?请提供代码
  • edit您的问题包括您对该主题所做的任何研究(例如,您已阅读的文档部分)。现在,您的测试文件有语法错误('test function 之后没有结束引号)。
  • @slideshowp2 var obj={ a: function (cb) { return function (err, res) { if (err) return cb(err);返回 cb(null, res); }; } }

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


【解决方案1】:

您可以使用 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 |                   
-------------|---------|----------|---------|---------|-------------------

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-13
    • 2021-12-08
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多