【问题标题】:Suppress the stack trace in Karma (AngularJS)抑制 Karma (AngularJS) 中的堆栈跟踪
【发布时间】:2023-04-05 05:30:01
【问题描述】:

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

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

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

我尝试了各种 karma config logLevel 选项,但我仍然得到一个跟踪转储。

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

【问题讨论】:

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


    【解决方案1】:

    karma-test-shim.js你可以设置...

    Error.stackTraceLimit = 0; // No Stack trace
    
    Error.stackTraceLimit = 2; // Some Stack trace
    
    Error.stackTraceLimit = Infinity; // Full stack trace
    

    kjhtml (karm-jasmine-html) 记者测试。

    【讨论】:

      【解决方案2】:

      很久以后,我在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]
      }],
      

      不知道你能得到多接近你的实际结果......相当长的镜头。或者更好的是换一个记者。这里有两个例子:

      【讨论】:

        【解决方案3】:

        快速而肮脏的解决方案:

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

        【讨论】:

          猜你喜欢
          • 2016-12-17
          • 2017-10-14
          • 2013-09-29
          • 1970-01-01
          • 1970-01-01
          • 2015-12-07
          • 1970-01-01
          • 2013-09-18
          • 1970-01-01
          相关资源
          最近更新 更多