TypeScript编译失败和Karma测试执行?

M'λ*_*'λ' 5 jasmine typescript karma-runner webpack

我目前正在使用Karma + Jasmine在基于TypeScript的项目上运行测试,并且当TypeScript编译在因果观察模式下失败时,我想“破坏测试”。

我正在使用标准Karma配置,并使用webpack预处理器(用于编译TS文件)来编译TS。一切工作都很好,除了在发生编译错误时看到所有测试都通过是极具误导性的(即使webpack编译失败,业力也会重新运行以前的测试)。

看起来似乎很琐碎,但是在查看文档并搜索Google一两个小时之后,我拼命地寻找一种解决方案,但我没有找到。

是否存在涉及业力,茉莉花,webpack和TypeScript的解决方案,这些解决方案可以在发生编译错误时中断测试而不会破坏监视模式?

编辑:添加了对手表模式的精度。

cie*_*awy 2

就我个人而言,我不会在单个工作流程中将 karma 与 webpack 一起使用。但请记住,通过对它们一起使用进行一些研究,包括打字稿,并且存在问题https://github.com/webpack/karma-webpack/issues/49https://github.com/webpack/webpack/issues/708 wihich你可能面临着。因此,正如提到的bail选项无法按预期工作,您可以尝试使用提到的插件,该插件会因 TS 错误而失败(引用问题 #708 的评论中的建议)。

更新:对于这种watch情况,我会考虑进行更改,以防止 webpack 失败,但同时引发错误并防止 karma 执行测试(基于此建议)。

module.exports = function (config) {

  config.set({

    browsers: [ 'Chrome' ],
    frameworks: [ 'mocha' ],
    reporters: [ 'mocha' ],

    files: [
      // ...
    ],

    // ...
    webpack: {
      plugins: [
          function()
          {
              this.plugin("done", function(stats)
              {
                  // Log each of the errors
                  stats.compilation.errors.forEach(function (error) {
                      console.log(error.message || error);
                  });

                  // Pretend no assets were generated. This prevents the tests
                  // from running making it clear that there were errors.
                  stats.stats = [{
                      toJson: function () {
                          return this;
                      },
                      assets: []
                  }];                      
              });
          }
      ]
    }
  })

}
Run Code Online (Sandbox Code Playgroud)

我刚刚检查过将上述插件添加到相当简单的项目https://github.com/itajaja/tslib-webpack-starter中,并且测试因任何 TS 编译错误而失败。