Javascript 如何使用sinon测试链式函数调用?
我正在测试的代码是:Javascript 如何使用sinon测试链式函数调用?,javascript,unit-testing,typescript,sinon,Javascript,Unit Testing,Typescript,Sinon,我正在测试的代码是: obj.getTimeSent().getTime() 其中obj.getTimeSent()返回一个日期,然后在该日期调用getTime() 为了保留此功能,我尝试了以下方法: const timeStub = sandbox.stub(Obj, 'getTimeSent').callsFake(() => { return 1 //Doesn't matter what it returns }); 表示调用时,callsFake()“使存根调用提供的fa
obj.getTimeSent().getTime()代码>
其中obj.getTimeSent()
返回一个日期,然后在该日期调用getTime()
为了保留此功能,我尝试了以下方法:
const timeStub = sandbox.stub(Obj, 'getTimeSent').callsFake(() => {
return 1 //Doesn't matter what it returns
});
表示调用时,callsFake()
“使存根调用提供的fakeFunction”但出现错误“类型错误:obj.getTimeSent(…)。getTime不是函数”函数应将另一个函数返回链:
const getTimeStub = sandbox.stub().returns(...);
const getTimeSentStub = sandbox.stub(obj, 'getTimeSent').returns({ getTime: getTimeStub });
但是getTime()仍在被调用——这是不可能的,因为存根不是这样做的。它将导致“getTime不是函数”错误,但不会调用real getTime。请提供可以复制该问题的方法。@estus您是对的,我错误地认为“getTime不是函数”错误意味着函数试图被调用。