在sinon中存根嵌套函数调用

Stubbing nested function calls in sinon

本文关键字:嵌套 函数调用 存根 sinon      更新时间:2023-09-26

有三个单独的问题与此问题相似,但没有一个与我的情况相似。

所以我基本上有一个函数,它把一个函数作为参数

var myfunc ( func_outer ) {
    return func_outer().func_inner();
}

在我的单元测试中,我希望能够制作myfunc2的存根。基本上,我需要能够存根,这是一个嵌套的存根。我目前使用这种手动存根,但如果有办法的话,我宁愿使用sinon存根。

const func_outer = () => {
    return {
       func_inner: () => {return mockResponse;}
    }
};

有人遇到过这种情况吗。有没有一种简单的方法来解决这个问题?

从sinon文档中,您可以查看退货部分

stub.return(obj)
使存根返回所提供的值。

您可以尝试以下操作:

首先,您应该确保您截断了内部函数,然后让它返回您想要的值。

func_innerStub = sinon.stub().returns('mockResponse')  

然后存根您的外部函数,使其返回带有存根的内部函数的对象。

func_outerStub = sinon.stub().returns({func_inner: func_innerStub})

您可以使用myfunc函数遵循此模式,并将func_outerStub作为参数传递。