诗乃间谍不起作用

时间:2015-02-11 10:06:44

标签: mocha sinon

我有一个这样的测试用例:

    it("test",function(){

        var spy = sinon.spy(test,"method");
        decider = 1
        test.nextServiceTab();

        assert(spy.calledOnce);

    });

当调用方法test.nextServiceTab时,它会根据值method调用decider,该值应为1.实际上控件转到{{1} }。

但为什么控件会转到method?既然我正在从事间谍活动,那应该是不对的?

我的目标是检查method是否被调用。我在哪里弄错了?

我使用sinon的方式是否正确?

1 个答案:

答案 0 :(得分:0)

如果你想避免控制进入该功能,你应该使用sinon.stub而不是sinon.spy。使用存根,你仍然可以看到它是否被调用,因为存根实现了与spy相同的接口,但另外它阻止了原始函数接收控制并允许你覆盖行为。

例如,如果您希望函数始终返回true:

it("test",function(){

    var stub = sinon.stub(test, "method");
    stub.returns(true);

    decider = 1;
    test.nextServiceTab();

    assert(stub.calledOnce);

    stub.restore();

});