【问题标题】:Sinon spy doesn't work诗乃间谍不起作用
【发布时间】:2015-02-11 10:06:44
【问题描述】:

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

    it("test",function(){

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

        assert(spy.calledOnce);

    });

当方法test.nextServiceTab被调用时,它会根据decider的值调用method,这应该是1。实际上控制权转到method

但是为什么控制权转到method?既然我是间谍,那应该是不对的吧?

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

我使用sinon的方式对吗?

【问题讨论】:

  • 你能发布一个简单版本的 nextServiceTab() 实现吗?

标签: mocha.js sinon


【解决方案1】:

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

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

it("test",function(){

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

    decider = 1;
    test.nextServiceTab();

    assert(stub.calledOnce);

    stub.restore();

});

【讨论】:

    猜你喜欢
    • 2016-08-04
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 2017-04-18
    • 2022-07-01
    • 2023-03-29
    • 2013-11-21
    • 1970-01-01
    相关资源
    最近更新 更多