Javascript 重置模块。导出moch单元测试文件中的对象
我是nodejs和mocha的新手,我已经编写了js程序来列出文件夹中的文件以及mocha和chai框架中的单元测试用例 我在这里试图实现的是,在每个测试用例之前,我想重置设置到module.export中的对象,并且我想获得文件夹中的文件数,该文件夹实际上位于数组“objResult”和“result”中 但是我要把计数加到之前的测试用例中 首先运行测试用例,然后从“0”开始,它包含85个文件。 请参见下面的输出 第二次测试用例运行,而不是从“0”开始,而是从“85”开始。 下面是代码, test.js DocReader.jsJavascript 重置模块。导出moch单元测试文件中的对象,javascript,node.js,mocha.js,Javascript,Node.js,Mocha.js,我是nodejs和mocha的新手,我已经编写了js程序来列出文件夹中的文件以及mocha和chai框架中的单元测试用例 我在这里试图实现的是,在每个测试用例之前,我想重置设置到module.export中的对象,并且我想获得文件夹中的文件数,该文件夹实际上位于数组“objResult”和“result”中 但是我要把计数加到之前的测试用例中 首先运行测试用例,然后从“0”开始,它包含85个文件。 请参见下面的输出 第二次测试用例运行,而不是从“0”开始,而是从“85”开始。 下面是代码, te
let fs = require('fs');
let directory = "C:\\temp\\";
let result = [];
let objResult = [];
function ResultObject(filename) {
this.filename = filename;
}
function readDirectory(dirname) {
if(dirname==null || dirname.trim()==""){
throw new TypeError("Expects directory path as parameter");
}
var files = fs.readdirSync(dirname);
readFiles(files, dirname);
var newArray = objResult;
newArray.forEach(function (item) {
result.push(item.filename + " | " + item.testId + " | " + item.status + " | " + item.duration + " | " + item.name);
})
}
function readFiles(files, dirname) {
if(files==null || dirname==null){
throw new TypeError("Expects array of files and directory as parameter");
}
for (let filename of files) {
try {
objResult.push(new ResultObject(
filename));
}
catch (err) {
console.log(`${err}`);
}
}
}
module.exports = {
readDirectory:readDirectory,
readFiles:readFiles,
ResultObject: ResultObject,
objResult:objResult,
directory:directory,
result:result
};
我尝试使用现有变量,即“readerExport”
我还创建了新变量,即“let readerExport1”
但在节点中,输出是相同的,模块是相同的,这意味着后续的导入将返回相同的实例-换句话说,您尝试执行的操作将不起作用
每次可以从中删除模块路径时强制重新加载模块(尽管这是低效的)
或者,您可以手动设置模块的状态,即
readerExport.result = [];
readerExport.objResult = [];
或者更好地使用现有的存根/模拟库,如
let fs = require('fs');
let directory = "C:\\temp\\";
let result = [];
let objResult = [];
function ResultObject(filename) {
this.filename = filename;
}
function readDirectory(dirname) {
if(dirname==null || dirname.trim()==""){
throw new TypeError("Expects directory path as parameter");
}
var files = fs.readdirSync(dirname);
readFiles(files, dirname);
var newArray = objResult;
newArray.forEach(function (item) {
result.push(item.filename + " | " + item.testId + " | " + item.status + " | " + item.duration + " | " + item.name);
})
}
function readFiles(files, dirname) {
if(files==null || dirname==null){
throw new TypeError("Expects array of files and directory as parameter");
}
for (let filename of files) {
try {
objResult.push(new ResultObject(
filename));
}
catch (err) {
console.log(`${err}`);
}
}
}
module.exports = {
readDirectory:readDirectory,
readFiles:readFiles,
ResultObject: ResultObject,
objResult:objResult,
directory:directory,
result:result
};
readerExport.result = [];
readerExport.objResult = [];