我正在尝试编写一个自定义记者,将实习生测试结果输出到文件中,但我遇到了障碍。
我设法通过Intern的dojo加载器获取Node文件系统API,但writeFile或writeFileSync都没有做任何事情(区别在于writeFileSync锁定了进程)。
我的记者代码的最小版本:
define(["node_modules/intern/node_modules/dojo/node!fs"], function (fs) {
var buffer = "";
return {
"/test/pass": function(test) {
buffer += test.id + " passed\n";
},
"/test/fail": function(test) {
buffer += test.id + " failed\n";
},
"/runner/end": function () {
fs.writeFileSync("result.txt", buffer, function (error) {
if (error) {
throw error;
}
console.log("File saved");
});
}
};
});
如果我用控制台日志替换写入调用,我会得到预期的数据,所以其他所有内容都可以正常工作。
编辑:修改后的代码:
define(["node_modules/intern/node_modules/dojo/node!fs"], function (fs) {
var buffer = "";
return {
"/test/pass": function(test) {
buffer += test.id + " passed\n";
},
"/test/fail": function(test) {
buffer += test.id + " failed\n";
},
"/runner/end": function () {
fs.writeFileSync("result.txt", buffer);
console.log("File saved");
}
};
});
答案 0 :(得分:1)
是的,可以从记者那里写文件 - lcov
reporter就是这样做的。但是,在发布Intern 1.2之前,异步I / O操作可能无法正常完成,因为在测试运行结束时强制终止该进程。