【发布时间】:2017-04-29 21:37:00
【问题描述】:
我对前端测试完全陌生,在进行特定测试时遇到了一些麻烦。我正在使用 Mocha、Sinon 和 Chai。
基本上我有一些我想测试的私有函数。我不想将它们暴露给 API,所以我尝试使用 Sinon 来模拟这些函数。
其中一个私有函数返回一个promise,大致具有以下结构:
myPrivateFunc(arg1, arg2).done(function(x) {
if (x.length > 0) {
// do something
} else {
// call some other private function
}
});
我试图通过做这样的事情来解决这个问题:
sinon.stub(object, 'myPrivateFunction').withArgs(args1, args2);
当我在测试中调用公共函数时,私有函数被正确调用,但当然最终会失败:
TypeError: Cannot read property 'done' of undefined
我尝试过使用 .returns(),但我完全不确定自己在做什么。
谁能指出我正确的方向?我查看了其他类似的问题,并没有真正找到合适的答案。
【问题讨论】:
-
你的测试替身需要返回一个对象,该对象实现了一个名为
done的方法。 -
注意:
done不是承诺的标准。你最好使用then。
标签: javascript mocha.js sinon