【发布时间】:2017-10-25 04:54:12
【问题描述】:
所以我有这个方法我想测试:
app.get('/test', exposeDb, function(req, res) {
req.dbService.getUserByID( function(err, result) {
if (result == 5) {
res.statusCode = 200;
}
else {
res.statusCode = 500;
}
});
});
我正在尝试对它进行存根,以便 getUserByID 方法返回一个值,所以我这样做:
describe('Test', function() {
beforeEach(function() {
var getUserByIDStubE = sinon.stub(dbService, 'getUserByID').callsFake(() => {
return 5;
});
});
it('TESTSETSTETS', function(done) {
chai.request(server)
.get('/test')
.send({})
.end(function (err, res) {
res.should.have.status(200);
});
done();
});
});
问题是,req.dbService.getUserByID 中的代码从未被调用,所以我无法检查“结果”是否等于 5 的逻辑。
如果我使用 console.log(req.dbService.getUserByID()),那确实返回了 5 的存根值。但我不知道它在回调上是如何工作的。
如何让它在我的示例中返回 5(然后检查 res.statusCode)?
提前致谢!
【问题讨论】:
标签: javascript node.js unit-testing sinon chai