我正在使用WebdriverIO v4创建通过/失败的各种测试的HTML报告。我通过多个事件侦听器(例如this.on('test:start'),this.on('suite:end')等)收集测试结果。最后一个事件是this.on('end'),当所有测试完成执行时调用。这里是根据运行该操作系统,浏览器等对测试结果进行排序的方法。
问题似乎是我的程序在允许该函数完成或从该函数接收回调之前终止。
这是我代码的要旨:
let aws = require('aws-sdk');
aws.config.update({
//Censored keys for security
accessKeyId: '*****',
secretAccessKey: '*****',
region: 'us-west-2'
});
let s3 = new aws.S3({
apiVersion: "2006-03-01",
});
/*
*
* Here is where the program generates HTML files
*
*/
//The key and data fields are not actually asterisks, this is just to show that key and data fields are initialized at this point
let key = "****"
let data = "****"
s3.upload({
Bucket: 'html',
Key: key,
Body: data
}, function (err, data) {
if (err) {
console.log("Error: ", err);
}
if (data) {
console.log("Success: ", data.Location);
}
}).on('httpUploadProgress', event => {
console.log(`Uploaded ${event.loaded} out of ${event.total}`);
});
运行测试时,将显示结果,然后程序终止。程序不等待回调返回,因此不会显示错误或成功消息。文件未上传到S3。
我知道s3.upload()
的工作原理是因为如果我在项目中较早地使用伪数据运行代码,则上传成功。但是在我的项目结束时,该程序在上传完成之前终止。
如何解决此问题?如何保证在程序终止之前将文件上传到S3?终止前如何查看回调?谢谢!