Javascript 如何测试调用函数的行?
我有一个命令行应用程序。 该文件有几个函数,但如何测试调用第一个函数的行 比如说Javascript 如何测试调用函数的行?,javascript,node.js,jestjs,testng,Javascript,Node.js,Jestjs,Testng,我有一个命令行应用程序。 该文件有几个函数,但如何测试调用第一个函数的行 比如说 function child(ch) { console.log(ch); } function main(a) { console.log(a); child('1'); } main(24); 如果您不介意将文件拆分为两个不同的文件,如何在此处测试加载文件时是否调用了main。: index.js 从“/main.js”导入main; 主管(24); main.js 函数子(ch){ 控制
function child(ch) {
console.log(ch);
}
function main(a) {
console.log(a);
child('1');
}
main(24);
如果您不介意将文件拆分为两个不同的文件,如何在此处测试加载文件时是否调用了main。: index.js
从“/main.js”导入main;
主管(24);
main.js
函数子(ch){
控制台日志(ch);
}
主要功能(a){
控制台日志(a);
儿童(“1”);
}
导出默认主;
然后,您可以从main.js模拟main()函数,并检查它是否在index.js导入时被调用:
索引规范js
const mockedMain=jest.fn();
jest.mock('../main.js',()=>({
默认值:()=>mockedMain(),
}));
description('在index.js导入时调用main的测试',()=>{
它('应该调用main',()=>{
需要('../index.js');
期望(mockedMain).tohavebeincalled();
});
});
我不知道如何在将main()保存在同一个文件中的同时做同样的事情。您正在寻找spyOn。您能否测试该行为,在这种情况下,
24
然后'1'
被记录?问题不是如何测试它调用main()
。谁在乎它是否调用main()
?如果明天您决定将main()
重命名为其他名称,该怎么办?如果main()
没有对模块执行任何重要操作,并且需要调用另一个函数来完成模块初始化,该怎么办?首先确定为什么要调用main()
,并验证在加载模块后,main()
或无论其名称是什么,是否做了需要做的事情,是否是导致您决定编写main()
函数并调用它的事情。这就是为什么必须首先进行测试。