Sinon callCount 始终为零

Sinon callCount is always zero

在我的节点 js 应用程序中有一个名为 index.js 的文件。下面是文件的代码。

function initiateProcess(pattern){
    run();
};

function run(){
    console.log('run called');  
}

module.exports ={initiateProcess,run}

我为这个文件添加了一个测试用例。因为我试图验证 运行 是否至少被调用过一次。

const chai= require('chai');
const server =require('./index');
const sinon =require('sinon');
const { expect } = chai;

describe('entry point test suite',()=>{
    it('should call function every second',()=>{
        const pattern= '* * * * * *';
        let spy = sinon.spy(server,'run');              
        server.initiateProcess(pattern);
        expect(spy.callCount).greaterThan(0);
    })
});

但 callCount 始终为零。我是 sinon 的新手。我在这里做错了什么。

这不是 Sinon 的问题,这实际上取决于 JavaScript 的工作方式。

当您通过

导出时,

initiateProcess 引用在您的模块中声明的 run

module.exports = { initiateProcess, run }

导出的run函数内部调用的run函数不同initiateProcess,它是一个副本。

为此,您需要确保模拟的 run 函数与 initiateProcess 中调用的函数相同,方法如下:

module.exports = {
  initiateProcess(pattern) {
    this.run();
  }
  run() {
    console.log('run called');
  }
}