Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用sinon测试链式函数调用?_Javascript_Unit Testing_Typescript_Sinon - Fatal编程技术网

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不是函数”错误意味着函数试图被调用。