问题描述
在运行测试之前,我需要在文件外读取/获取 mocha 测试套件/案例文本。例如,我有以下测试套件和测试用例:
describe('Login Page: ',() => { it('should login successfully',() => { ... });});
我想从另一个 js 文件中获取文本:“登录页面:-应该登录成功”。有没有办法导入和访问?最好的解决方案是什么?
解决方法
简单的解决方案:
let suiteDesc = {};
const data = fs.readFileSync(filePath,{encoding: 'utf8'});
if(data != undefined) {
suiteDesc.path = filePath;
let dataArray = data.split('\n');
let caseDescArray =[];
dataArray.forEach( l => {
if(l.trim().startsWith('describe(')) {
suiteDesc.title = getOnlyTitle(l);
}
else if(l.trim().startsWith('it(')) {
caseDescArray.push(getOnlyTitle(l));
}
});
suiteDesc.cases = caseDescArray;
}
return suiteDesc;
}
// Removes extra js code from line
getOnlyTitle = (str) => {
let title = '';
if(str.includes('\`')){
title = str.substring(str.indexOf('\`')+1,str.lastIndexOf('\`'));
return removeVarsFromString(title);
} else if(str.includes('\"')){
title = str.substring(str.indexOf('\"')+1,str.lastIndexOf('\"'));
return title;
} else if (str.includes("\'")){
title = str.substring(str.indexOf('\'')+1,str.lastIndexOf('\''));
return title;
}
}
//Removes all variables = ${} from the string template
removeVarsFromString = (str) => {
if(str.includes('${')){
let startIndexJsVar = str.indexOf('${');
let endIndexJsVar = str.indexOf('}') + 1;
let jsVarString = str.slice(startIndexJsVar,endIndexJsVar);
str = str.replace(jsVarString,'');
return removeVarsFromString(str);
} else {
return str;
}
}```