基本上我想修补另一个函数调用的函数,以便我可以确认它们已被调用。这可能在js? (我正在使用Mocha / Chai / Sinon进行测试)。
我想做的简化版本:
// 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)
答案 0 :(得分:3)
这是可能的,但它需要进行一些重写,最明显的是你在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
功能的本地引用,您可以&# 39;从测试文件中访问。
exports
对象 可从测试文件中访问(名称为renderFuncs
),因此Sinon可以将引用更改为{{1}并用间谍包裹它。