Jasmine 如何判断量角器/茉莉花何时完成?(报告工具逻辑)

Jasmine 如何判断量角器/茉莉花何时完成?(报告工具逻辑),jasmine,protractor,reporting,file-writing,Jasmine,Protractor,Reporting,File Writing,因此,我必须重写一个用于量角器/Jasmine E2E测试的HTML报告的报告工具。现在,我能够很好地将运行的一个测试文件的所有测试结果写入一个文件(例如test1.spec.js) 我的问题来自于我一次运行多个文件(例如,['./test1.spec.js','./test2.spec.js'])。理想情况下,我想做的是将两个测试中的所有信息存储到一个(比如)fileData对象/变量中,然后在所有测试文件完成后将该变量写入一个文件 我曾尝试在jasmineDone函数中编写,但这是在每个测试

因此,我必须重写一个用于量角器/Jasmine E2E测试的HTML报告的报告工具。现在,我能够很好地将运行的一个测试文件的所有测试结果写入一个文件(例如test1.spec.js)

我的问题来自于我一次运行多个文件(例如,['./test1.spec.js','./test2.spec.js'])。理想情况下,我想做的是将两个测试中的所有信息存储到一个(比如)fileData对象/变量中,然后在所有测试文件完成后将该变量写入一个文件

我曾尝试在jasmineDone函数中编写,但这是在每个测试文件完成后发生的,因此它要么复制我从报告中获得的信息,要么覆盖/弄乱报告的样式

this.jasmineDone = function () {
    fileData += styles.closeReportTags;
    fileData += styles.closeBodyHtmlTag;
    fs.appendFileSync("C:/Reports/testing1.html", fileData);
}
我还创建了一个在量角器配置文件中定义的afterLaunch方法,并在报告工具文件中使用:

this.afterLaunch = function (callback) {
    fs.writeFile("C:/Reports/testing1.html", fileData);
}
在上面的例子中,我尝试在每次运行期间将所有测试结果附加到fileData变量中,然后在完成后将其全部写回,但是fileData似乎没有正确地传递到afterLaunch方法(它没有向文件写入任何内容,只是创建了一个空白html文件)

所以我的问题是,我可以通过什么方式保持一个运行计数或标志,以确定是否有更多的测试文件排队等待Drugator/jasmine,从而确定实际的测试运行何时完成,以及我可以在哪个范围内使用它来写我的文件


谢谢。

我也有同样的问题。最终,Jasmine/量角器中所有可用的钩子都不够好(尤其是在进行切分测试时)。最终对我有用的是创建我自己的cli,解析/存储我想要的结果,然后进行报告

下面是一个cli示例:

#/usr/bin/env节点
var spawn=require('child_process')。spawn;
var输出=[];
//从cli获取量角器参数,并跳过前两个(节点和自身)
var args=process.argv.slice(2);
//运行量角器
量角器=spawn('node_modules/.bin/pergrator',args);
/**
*进程侦听器
*/
量角器.stdout.on('data',函数(缓冲区){
var text=buffer.toString();
//在此处分析结果。。。
console.log(文本);
});
量角器.stderr.on('data',函数(缓冲区){
var text=buffer.toString();
console.log(文本);
});
量角器打开('退出'),功能(状态){
//量角器完成了,在这里报告你的结果。。。
});
确保将文件chmod为可执行文件(例如
chmod755
)。然后这样运行它:


/myCI conf.js——baseUrlhttp://example.com

事实上,我已经找到了一些适合我当前解决方案的方法,但我仍然计划按照您的方式行事!感谢您的回复。这是一个巨大的头痛哈哈。