我有一个mocha测试用例,我想监视现有的函数。不幸的是,sinon.js不计算电话:
it("should work with spy", function() {
var func = function() {
};
var spy = sinon.spy(func);
func();
func();
console.log(spy.callCount);
// fails
assert(spy.CallCount == 2);
/* works:
var secondSpy = sinon.spy();
secondSpy();
console.log(secondSpy.callCount);
*/
});
可能出现什么问题?
答案 0 :(得分:1)
问题是你需要像在工作示例中那样调用间谍。可以调用函数的唯一实例(参见line 21)是在对象内部(例如sinon.spy(jQuery, "ajax")
),因为它将使用间谍属性覆盖它。在另外两个可以创建间谍的情况下,它只会返回一个模仿原始函数的间谍。
但这对于测试模块应该非常简单,因为您可以使用我之前提到的方法 - sinon.spy(moduleName, "methodToSpy");
。然后,当您直接调用该方法时,您还可以获取间谍属性。然后删除调用moduleName.methodToSpy.restore()
所需的间谍属性。