是否可以从自定义报告者写入文件?

时间:2013-07-10 13:37:01

标签: intern

我正在尝试编写一个自定义记者,将实习生测试结果输出到文件中,但我遇到了障碍。

我设法通过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");
        }
    };
});

1 个答案:

答案 0 :(得分:1)

是的,可以从记者那里写文件 - lcov reporter就是这样做的。但是,在发布Intern 1.2之前,异步I / O操作可能无法正常完成,因为在测试运行结束时强制终止该进程。