1

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

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

1 回答 1

1

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

于 2013-07-16T06:08:24.927 回答