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');
}
}
在我的节点 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');
}
}