gpt4 book ai didi

node.js - 无法在 async-promise 函数中使用 Jasmine 的 'It' block

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:43 25 4
gpt4 key购买 nike

我在循环内使用 IT block 时遇到问题。该循环基本上来自返回的 Promise,这是一个从 Excel 文件读取数据的 exceljs 模块。

这里是 promise 函数。

var excelJs = require('exceljs');
var Excel = browser.params.Excel;

this.createProfile = function() {
var arr = [];
return new Promise(function(fulfill, reject){
var workbook = new excelJs.Workbook();

workbook.xlsx.readFile(Excel.filePath).then(function(){
worksheet = workbook.getWorksheet(1);
worksheet.eachRow({includeEmpty: true}, function(row, rowNumber)
try {
if (rowNumber != 1) {
arr.push(row.values);
fulfill(arr);
}
} catch(ex){reject(ex);}
}, reject);
});
});
};

这是我在规范文件中调用的方法。

describe('Bulk Purchase', function(){

var cp = createProfile();
cp.then(function(data){
for (var i in data){
it('Automate School Supplies Purchase', function(done){
console.log('Ballpen: ' + data[i][1]);
console.log('Notebook: ' + data[i][2]); //etc
done();
});
}
})
});

如果我从代码中删除 IT block ,规范将显示预期值。有人可以告诉我为什么 promise 中的简单 IT block 不起作用吗?任何帮助将不胜感激,谢谢:)

我对此有一个解决方法,如果我将 Excel 转换为 JSON,并需要 json 文件并执行 forEach,那么我可以轻松地进行数据驱动的自动化测试。但我不想从其他源文件中移动来实现我原来的方法。

// where I used xlsx-to-json npm to convert my excel to json
var jsonData = require('path to converted excel to json file');

jsonData.forEach(function(data){
it('Automate School Supplies Purchase', function(){
console.log(data.Ballpen);
console.log(data.Notebook); //etc
})
});

最佳答案

所有describe 和it 语句都需要同步。 Mocha/Jasmine 读取脚本启动信息。所有异步内容都必须位于 it/beforeEach/afterEach 等的 cb 函数内。

您无法基于异步数据创建测试用例。唯一的解决方案是针对所有情况使用一个大的 it 语句:

describe('Bulk Purchase', function() {
it('Automate School Supplies Purchase', function(done) {
var cp = createProfile();
cp.then(function(data) {
for (var i in data) {
console.log('Ballpen: ' + data[i][1]);
console.log('Notebook: ' + data[i][2]); //etc
};
done();
});
});
});

关于node.js - 无法在 async-promise 函数中使用 Jasmine 的 'It' block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40171073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com