gpt4 book ai didi

node.js - 当回调未作为参数传递时,如何使用 sinon 在 node.js 中对回调进行单元测试?

转载 作者:太空宇宙 更新时间:2023-11-03 23:19:05 24 4
gpt4 key购买 nike

var data = function (req, res, next) {
var data;
modelClass.getData(function (err, response) {
data = response[0];
req.headers[constants.DATA] = data;
next();
}
});
};

如何在 Node.js (express.js) 中对上述函数进行单元测试,特别是当回调未作为参数传入时?我打算使用Sinon单元测试框架。

此处显示的示例:youtube tutorial仅显示如何测试回调作为参数传递时的情况。

最佳答案

基本上我们可以在单元测试中做一些检查:

  1. 检查req.headers[constants.DATA]是否具有正确的值
  2. 检查是否调用了next

这是我测试该代码的示例

const chai = require('chai');
const assert = chai.assert;
const sinon = require('sinon');

const modelClass = require('...'); // your model class file
const src = require('...'); // your source file

describe('test', function() {
let req;
let res;
let next;
const response = [100];

beforeEach(function() {
// we mock `req` and `next` here
req = {
headers: {}
};
next = sinon.spy();
sinon.stub(modelClass, 'getData').yields(null, response); // for callback function, we use yields to trigger the callback
});

afterEach(function() {
sinon.restore();
})

it('run successfully', function() {
src.data(req, res, next);

assert.equal(req.headers[constants.DATA], 100);
assert(next.calledOnce);
});
});

关于node.js - 当回调未作为参数传递时,如何使用 sinon 在 node.js 中对回调进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51758157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com