Sinon存根返回假

时间:2018-12-11 10:11:21

标签: sinon stub

我正在使用sinon和ava进行测试。我正在存根一些函数,并检查这些函数是否被调用。我检查了控制台,正在调用函数。但取而代之的是,sinon将其返回为notCalled(.false)。下面是一段代码。

test('test',(t)=>{
const transformerStub =  sandbox.stub(transformer,'getActivity').resolves(JSON.stringify({"componentTypeID":1234}));
const getAuthTokenStub = sandbox.stub(getToken,'getToken').resolves({"Token":"Value"});
const axiosGetRequest = sandbox.stub(utils,'axiosGetRequest');
app.test(organizationId,learning);
t.is(transformerStub.called,true); // it is getting called . it works well and returns true
t.is(getAuthTokenStub.called,true);  // it is getting called but returns false
t.is(axiosGetRequest.called,true);   // it is getting called but returns false

};

{{1}}

});

1 个答案:

答案 0 :(得分:0)

  

使用存根包装现有函数时,不调用原始函数。   https://sinonjs.org/releases/latest/stubs/

首先对存根转换器进行存根时,不会调用getToken.getToken和utils.AxiosGetRequest,因为不会调用真正的getActivity。

有2种选择:

  1. 如果只想检查方法是否被调用,请使用spy。例如:当您想对util进行存根处理时,请对getToken和Transformer使用spy;当您想存根getToken时,请在转换器上使用间谍。
  2. 如果您仍然想为所有3合1测试添加行为(解决),则可以重新排列代码。例如:存根工具,运行app.test,执行断言;存根getToken,运行app.test,进行断言;最后存根转换器,运行app.test并进行断言。