使用业力和Bazel进行打字稿测试时,如何衡量覆盖率?

时间:2019-06-12 07:39:09

标签: typescript karma-runner bazel

我正在将karma + webpack测试运行程序转换为打字稿以使用Bazel。当前系统使用karma-coverage-istanbul-reporter报告代码覆盖率。使用Bazel使用业力运行打字稿测试时,应该如何测量覆盖率?

我尝试将karma-coverage-istanbul-reporter和karma-coverage-istanbul-instrumenter插件添加到karma配置文件中,并与karma_web_test_suite结合使用。

// karma.conf.js
module.exports = function(config) {
  config.set({
    reporters: ['coverage-istanbul'],
    preprocessors: {
      "**/!(*.spec).js": ["karma-coverage-istanbul-instrumenter"]
    },
    coverageIstanbulInstrumenter: {
      esModules: false,
      produceSourceMap: true
    },
    coverageIstanbulReporter: {
      reports: ['text-summary', 'html'],
      dir: path.join(OUTPUT_DIR, "coverage")
    }
  })
};
# BUILD.bazel
karma_web_test_suite(
    name = "test",
    config_file = "//:karma.conf.js",
    data = [":ts_src"],
    deps = [
        ":test_lib",
    ],
)

从表面上看,这是可行的,该代码由伊斯坦布尔进行检测,并将文本摘要中的覆盖率报告给stdout。但是,html报告程序存在一些问题,该报告程序试图从js sourcemaps中读取打字稿源文件。

  1. 是否有办法从:test_lib ts_library中获取所有源文件的传递性关闭?在上面的示例中,它通过为引用文件组(ts_src)的karma Web测试提供数据属性来解决此问题,但是如果存在ts_libraries的嵌套依赖关系图,这将变得很难管理。

  2. 从业力TESTSRC_DIR使用源文件时,源映射中的源文件路径不再正确。

我可以编写一个因果预处理程序来操纵sourcemaps路径,但是感觉应该有更好的方法来做到这一点?

0 个答案:

没有答案