提问者:小点点

Sinon存根返回false


我正在用sinon和ava做测试。我正在清除一些函数,并检查这些函数是否被调用。我检查了控制台,函数正在被调用。但是sinon返回的是notCalled(。称为假)。下面是这段代码。

const test = (a, b) => {

transformer.getActivity(a, b).then((response) => {

    var response = JSON.parse(response);
    var data = response.data;


    getToken.getToken(testData.organizationId).then(token => {
        let requestData = {
            url: url,
            token: token
        }
        return utils.axiosGetRequest(requestData);
    }).catch(error => {
        console.log("Error: ", error);

    });
})

};

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个答案

匿名用户

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

当你首先存根变压器时,得到托克和实用程序。不会调用 AxiosGetRequest,因为不会调用真正的 getActivity。

有两种选择:

  1. 如果只想检查方法是否被调用,请使用spy。例如:当您想使用stub-util时,请在getToken和transformer上使用spy;当您想要存根getToken时,请使用spy on transformer
  2. 如果您仍然想将行为(解析)添加到所有三合一测试中,可以重新安排代码。例如:stub-utils、run-app。测试,做断言;存根getToken,运行应用程序。测试,做断言;最后是stub-transformer,运行app。测试,并执行断言