当前位置: 首页 > 知识库问答 >
问题:

Sinon存根返回false

张承颜
2023-03-14

我正在用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个答案

徐鑫鹏
2023-03-14

使用存根包装现有函数时,不会调用原始函数。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。测试,并执行断言
 类似资料:
  • 我在获取一个sinon存根以返回/解析另一个sinon存根时遇到问题。我正在使用西农、柴、柴和摩卡。 我正在按顺序执行许多异步任务,我想测试的代码看起来像这样: 我尝试为此创建存根的尝试如下所示: “saveit”方法在Terminal.prototype,这就是为什么我需要在那里存根它。当我尝试运行它时,我收到错误消息: 在线上: 但如果我在控制台中转储终端对象,它看起来很好,就像任何其他存根对

  • 我试图用Mocha、Chai和Sinon为我的代码添加更多的测试,但是我很难理解为什么第二个存根函数没有被识别为被调用。 我有一个向用户发送电子邮件的功能(稍后我将测试电子邮件功能-现在我只想处理我控制的存根依赖项) 和测试文件: 我可以用Sinon存根User.findOne()方法,但是当我尝试存根emailLogger.log()方法时,我遇到了麻烦。它似乎调用了存根,而不是真正的方法,而是

  • 我需要为一个endpoint创建一个单元测试,这个endpoint将向某个API发出HTTP请求,并发送回包含HTTP请求结果的响应, 我使用请求promise链接在这里节点包,你可以看到下面的代码: 来自 预计正文(响应数据)是: 我使用摩卡、柴和西农来运行单元测试,你可以在下面看到上述功能的单元测试案例: 当我运行时,此集成测试总是失败,需要找出如何正确地存根。

  • 我有一个带有路由器的express应用程序,我想与Sinon一起测试。我无法成功模拟传递到请求处理程序的参数,希望能得到一些帮助。 这是我当前使用Mocha、Sinon、Chai的测试设置

  • 我正在尝试使用sinon存根替换一个可能需要很长时间的函数。但是当我运行测试时,测试代码似乎没有使用sinon存根。 这是我要测试的代码。 这是测试代码。 我得到一个断言错误 我做错了什么?为什么不使用存根?摩卡的测试框架。

  • 我尝试了一个虚拟模块,并存根,但不工作。 应用程序.js test.js 我尝试了以下建议:sinon stub不替换函数 但还是一样。它不能取代功能。