用于在javascript中测试的另一个函数内的补丁/模拟函数

时间:2016-05-26 18:31:58

标签: javascript node.js unit-testing mocha sinon

基本上我想修补另一个函数调用的函数,以便我可以确认它们已被调用。这可能在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)

1 个答案:

答案 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}并用间谍包裹它。