Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何测试调用函数的行?_Javascript_Node.js_Jestjs_Testng - Fatal编程技术网

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()
函数并调用它的事情。这就是为什么必须首先进行测试。