我有一个这样的测试用例:
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的方式是否正确?
答案 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();
});