Sinon.js间谍在摩卡中无法正常工作

时间:2014-08-09 10:11:43

标签: node.js mocha sinon

我有一个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);
    */
});

可能出现什么问题?

1 个答案:

答案 0 :(得分:1)

问题是你需要像在工作示例中那样调用间谍。可以调用函数的唯一实例(参见line 21)是在对象内部(例如sinon.spy(jQuery, "ajax")),因为它将使用间谍属性覆盖它。在另外两个可以创建间谍的情况下,它只会返回一个模仿原始函数的间谍。

但这对于测试模块应该非常简单,因为您可以使用我之前提到的方法 - sinon.spy(moduleName, "methodToSpy");。然后,当您直接调用该方法时,您还可以获取间谍属性。然后删除调用moduleName.methodToSpy.restore()所需的间谍属性。