我正在将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中读取打字稿源文件。
是否有办法从:test_lib ts_library中获取所有源文件的传递性关闭?在上面的示例中,它通过为引用文件组(ts_src)的karma Web测试提供数据属性来解决此问题,但是如果存在ts_libraries的嵌套依赖关系图,这将变得很难管理。
从业力TESTSRC_DIR使用源文件时,源映射中的源文件路径不再正确。
我可以编写一个因果预处理程序来操纵sourcemaps路径,但是感觉应该有更好的方法来做到这一点?