我试图将代码库从回调重写为promises,但即使代码工作正常,sinon测试也因为没有触发callFake方法而失败。
在代码中有片段:
notificationDBService.deleteNotification()
.then(function() { || () => { //Both don't work
console.log('resolved'); // Is logged
notificationService.insertNotificationDB()
});
在我的摩卡测试中,我有:
sinon.stub(notificationDBService, 'insertNotificationDB').callsFake((n, callback) => {
insertNotificationNote = n;
insertNotificationCallCount++;
callback();
});
从不调用callFake函数,而是在我使用回调设置时:
notificationDBService.deleteNotificationsByProjectIDAndBranch(projectID, projectBranch,
(err, result) => {
if (err) {
logger.error(`Could not delete build notifications for: ${projectID} - ${projectBranch}. ${message}`, err);
} else {
notificationDBService.insertNotificationDB()
为什么callFake方法不再有效?
答案 0 :(得分:0)
看起来你正在追踪notificationDBService
,你在非承诺版本中调用了notificationDBService.insertNotificationDB
,但在承诺的版本中你正在调用notificationService.insertNotificationDB()
- 就像我看起来一样一个拼写错误(变量名中缺少DB
)?