我在让一个 sinon 存根返回/解决另一个 sinon 存根时遇到问题。我正在使用 sinon、chai、chai-as-promised 和 mocha。
我正在按顺序执行许多异步任务,我要测试的代码如下所示:
Terminal.findOneAsync({terminalId: terminalId}).then(function(terminal) {
terminal.lastSeen = timestamp;
return terminal.saveit();
}).then(function(terminal) {
//continue to do other stuff
});
我为此创建存根的尝试如下所示:
var saveitStub = sinon.stub(Terminal.prototype, 'saveit');
saveitStub.resolves(terminalUpdated);
var findOneStub = sinon.stub(Terminal, 'findOneAsync');
findOneStub.resolves(saveitStub);
“saveit”方法在 Terminal.prototype 中,这就是为什么我需要在那里存根。当我尝试运行它时,我收到错误:
Unhandled rejection TypeError: undefined is not a function
在线:
return terminal.saveit();
但是,如果我将终端对象转储到控制台中,它看起来还不错,就像任何其他存根对象一样(至少在我看来是这样)。存根 saveit() 方法可以在测试中“独立”调用。但是,每当我通过 chai 的“return”或 chai-as-promised 的“resolve”方法返回它时,我都会收到此错误。
知道为什么会这样吗?