补丁/模拟函数内的另一个函数在JavaScript中进行testing
基本上我想打补丁函数调用另一个函数,以便我可以确认他们已经被调用。 这在js中可能吗? (我正在使用Mocha / Chai / Sinon进行testing)。
我想要做的简化版本:
// in render.js export helper = function() {} export default = function() { helper() } // in the render-test.js import render, { helper } from 'render' // what I'd like to to: helper = sinon.spy() render() assert(helper.called, true)
这是可能的,但它确实需要重写,最主要的是你在render.js
调用helper
的render.js
。
这里有一个例子:
// render.js export function helper() {} export default function() { exports.helper() } // render-test.js import render, * as renderFuncs from 'render' ... sinon.spy(renderFuncs, 'helper'); render() assert(renderFuncs.helper.called)
您需要调用exports.helper()
而不是helper()
的原因是因为后者是helper
函数的本地引用,您无法从testing文件访问该helper
函数。
这个exports
对象可以从testing文件中获得(它的名字是renderFuncs
),所以Sinon可以把引用改为helper
,并用spy包装它。