我试图将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间谍只是没有检测到它。我想知道出了什么问题?
答案 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)