有没有办法在node.js中调用之前挂钩函数调用或重新定义函数?我需要这个用于单元测试,可能是代理还是一些测试库和选项?
示例:
//some js file
function a(){
b()// need to be hooked
}
function b(){
//do some stuff
}
答案 0 :(得分:0)
你可以做的是在目标函数周围创建一个包装器,并在执行之前执行你需要做的任何操作,例如:
const tmp = b
function b {
doSomething()
maybeBroadcastAnEvent()
tmp() //run original function
}
答案 1 :(得分:0)
您可以将.apply()
与arguments
对象结合使用,将a
的通话数据转发到b
功能。
function a(){
return b.apply(this, arguments)
}
function b(){
//do some stuff
}
因此,this
的任何a
值和参数都会转发到b
,而b
将返回a
次返回的任何内容。< / p>
正如您在新问题中尝试的那样,您可以创建一个将b
绑定到Function.prototype.call
方法的函数,以更简洁地完成此操作。
var a = Function.call.bind(b);
function b(){
//do some stuff
}
现在调用a
时,提供的第一个参数将成为this
的{{1}}值,提供的其余参数将成为b
的常规参数
如果您不关心b
值,并且只想传递所有args,则可以将this
绑定为null
的第一个参数,以便{ {1}}只会将所有提供的参数转发为常规参数。
.call