在sinon中存储嵌套函数调用

ral*_*aul 7 javascript unit-testing mocking stubbing sinon

有三个单独的问题与此类似,但它们都不像我的情况.

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

var myfunc ( func_outer ) {
    return func_outer().func_inner();
}
Run Code Online (Sandbox Code Playgroud)

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

const func_outer = () => {
    return {
       func_inner: () => {return mockResponse;}
    }
};
Run Code Online (Sandbox Code Playgroud)

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

小智 6

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

存根。返回(对象);
使存根返回提供的值。

您可以尝试以下操作:

首先你应该确保你存根你的内部函数,然后让它返回你想要的值。

func_innerStub = sinon.stub().returns('mockResponse')  
Run Code Online (Sandbox Code Playgroud)

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

func_outerStub = sinon.stub().returns({func_inner: func_innerStub})
Run Code Online (Sandbox Code Playgroud)

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