定制记者在自定义位置

时间:2013-07-29 19:59:41

标签: dojo intern

我正在尝试在实习生/ lib / reporter位置之外写一个自定义记者,并且不明白自定义记者的绝对中期应该是什么样子。 e.g。

在/var/www/tmp/intern-tutorial/intern-tutorial/tests/intern.js上测试配置

reporters : ["/var/www/tmp/intern-tutorial/customreporters/bugreporter"]

reporters : ["../customreporters/bugreporter"]

和bugreporter模块:

    define([
    'dojo/node!istanbul/lib/collector',
    'dojo/node!istanbul/lib/report/cobertura',
], function (Collector, Reporter) {
    var collector = new Collector(),
        reporter = new Reporter();

    return {
        '/coverage': function (sessionId, coverage) {
            //debugger;
            console.log("heeeere 1");
            collector.add(coverage);
        },
        '/runner/end': function () {
            //debugger;
            console.log("heeeere 2");
            reporter.writeReport(collector, true);
        }
    };
});

使用此配置我收到错误:

Error: Failed to load module dojo/node from /var/www/tmp/intern-tutorial/dojo/node.js (parent: dojo/node!17!*)
at injectUrl (/var/www/tmp/intern-tutorial/node_modules/intern/node_modules/dojo/dojo.js:743:12)

1 个答案:

答案 0 :(得分:0)

绝对模块ID是不包含...部分的模块ID,是模块ID。您的第一个示例是路径,而不是模块ID。您的第二个示例是相对模块ID,而不是绝对模块ID。如果您的baseUrl/var/www/tmp/intern-tutorial,则您的正确绝对模块ID为customreporters/bugreporter

所有这一切,您遇到的错误是因为您尝试从不存在的dojo目录加载模块。实习生不会将其内部副本Dojo公开为dojo,除非使用map。如果您正在测试的软件使用Dojo,则需要您自己的副本。如果您尝试使用Intern的Dojo副本,则需要自己映射或引用规范模块ID(intern/node_modules/dojo)。