抑制Karma中的堆栈跟踪(AngularJS)

时间:2014-12-06 13:32:19

标签: javascript angularjs unit-testing stack-trace karma-runner

有人知道在测试AngularJS时抑制Karma给出的堆栈跟踪的方法吗? (通过配置选项或插件)。

理想情况下,我希望我的测试报告只不过是使用常规摘要的单行测试用例失败列表。我喜欢一次性写出给定模块的测试,然后在编写实际代码时将其用作直接的 todo 列表。这是我通常在单元测试其他东西时设置它的方式。相反,我得到一条线和线条,并且必须滚动搜索我唯一关心的线:

" 浏览器版本(os)我的有用测试用例失败"

我尝试了各种karma配置 logLevel 选项,但我仍然获得了跟踪转储。

请注意:我正在寻找关于堆栈跟踪优点的辩论。我有一个特定的问题,只关心具体的答案。如果你知道一个插件可以提供与我想要的相似或更好的报告,那么分享!

3 个答案:

答案 0 :(得分:2)

karma-test-shim.js中,您可以设置...

Error.stackTraceLimit = 0; // No Stack trace

Error.stackTraceLimit = 2; // Some Stack trace

Error.stackTraceLimit = Infinity; // Full stack trace

使用kjhtmlkarm-jasmine-html)记者进行测试。

答案 1 :(得分:1)

很久以后,我只能在karma-jasmine项目上找到this closed issue,建议在配置文件中本地创建一个自定义记者:

var myReporterFactory = function() {

    this.onRunComplete = function(browser, result) {
        var TOTAL_FAILED = 'TOTAL: %d FAILED, %d SUCCESS\n';
        process.stdout.write(
            require('util').format(TOTAL_FAILED, result.error, result.success)
        );
    };

    return this;
};

// ...

plugins: [
  // other karma plugins ...
  {
    'reporter:myReporter': ['factory', myReporterFactory]
}],

不确定你的实际结果有多接近......相当长的一枪。或者更好的可能会切换到另一位记者。这里有两个例子:

答案 2 :(得分:0)

快速而肮脏的解决方案:

在 karma-jasmine-html-reporter jasmine.css 文件中 将 display:none 添加到类 .jasmine-stack-trace