模拟方法并通过原始回调进行调用

时间:2019-08-31 19:20:32

标签: node.js express sinon

我有一个正在尝试测试的方法,该方法是通过像这样的回调调用的:

sessionService.getSession(req, res, req.query.state, handleSessionResponse);


有没有一种方法,可以使用Sinon模拟getSession方法调用函数中的原始回调(handleSessionResponse)?换句话说,我并不关心getSession的实现,但是我还是想委托给handleSessionResponse进行测试。

以下是该文件的示例:

handleSessionResponse(err, data, response) {
    // get to this point and make assertions
}

sessionService.getSession(req, res, req.query.state, handleSessionResponse);

1 个答案:

答案 0 :(得分:0)

尝试一下。

const sinon = require('sinon')
const { mockReq, mockRes } = require('sinon-express-mock')

let request = {
   query:{
        state:{}
   }
}
const req = mockReq(request)
const res = mockRes()

sinon.stub(sessionService, 'getSession').callsFake((req, res, req.query.state, callback) => {
    callback(null, {}, {})
});

回调应调用原始的handleSessionResponse