为以下功能编写单元测试用例- 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 |
-------------|---------|----------|---------|---------|-------------------
我创建了一个函数,需要测试它
文件 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 |
-------------|---------|----------|---------|---------|-------------------