sinon间谍没有检测到函数调用

时间:2016-10-04 14:09:13

标签: javascript node.js sinon chai

我试图将sinonJS框架用于nodeJS单元测试。问题是,我无法让罪人间谍工作。这是我的代码:

const callback = sinon.spy(someModule.callback)

mainModule.doSomethingFunction() //someModule.callback function is called inside this function

assert(callback.calledOnce, 'callback should be called once')

它失败了:

  

AssertionError:应该调用一次回调

但是我在应该被调用的函数内部进行日志记录,并且它清楚地显示它被调用,而sinon间谍只是没有检测到它。我想知道出了什么问题?

2 个答案:

答案 0 :(得分:2)

要在对象中包装对象方法,您可以使用sinon,如下所示:

const callback = sinon.spy(someModule, 'callback');
mainModule.doSomethingFunction();
assert(callback.calledOnce, 'callback should be called once');
callback.restore();

请注意,当你完成打开间谍时,你应该致电restore

答案 1 :(得分:1)

语句const callback = sinon.spy(someModule.callback)创建了一个间谍,一旦调用它就会调用someModule.callback(BTW它不是常数),但它不会替换someModule.callback函数。要替换函数,请使用someModule.callback = sinon.spy(someModule.callback)