我在一个项目中观察该节点的每个绑定层功能的类型。js javascript层调用。为了观察类型,我使用
sinon
看起来像这样
var originalProcessBinding = process.binding;
sinon.stub(process, 'binding').callsFake(function (data) {
var res = originalProcessBinding(data);
// custom code here
return res;
}
所以,我的想法是
object
在…内
res
看看是不是
Function
. 如果是,请创建一个记录状态的存根,然后调用原始
作用
. 这个
custom code
看起来像
_.forEach(res, function(value, key) {
if (_.isFunction(value)) {
sinon.stub(res, key).callsFake(function() {
var args = arguments;
// do some processing with the arguments
save(args);
// call the original function
return value(...arguments);
}
}
}
然而,我不确定这是否能处理所有类型的退货。例如,如何处理错误?如果函数是异步的,会发生什么?
我运行了
node.js
测试套件并发现了许多失败的测试用例。是否有更好的方法来存根函数。谢谢
编辑:失败的测试用例有如下常见错误
Callback was already called
或
Timeout
或
Expected Error
.