我在https://github.com/danielbush/webpack-babel-karma-sourcemap-coverage有一个测试项目。
它由 中的两个简单源文件组成src/
,其中一个带有故意错误 ( src/lib2.js
)。
我想使用 babel 从 ES6 到 ES5 进行 webpack 和转换,并使用 Karma 在这个包上运行 Mocha 测试。
我已经添加了源映射并对其进行了测试,以便我可以看到原始文件的行号。
对我来说,堆栈跟踪如下所示:
21 02 2016 16:03:15.445:INFO [karma]: Karma v0.13.21 server started at http://localhost:9876/
21 02 2016 16:03:15.451:INFO [launcher]: Starting browser Chrome
21 02 2016 16:03:16.551:INFO [Chrome 48.0.2564 (Linux 0.0.0)]: Connected on socket /#yRS32ons0_2HGhrwAAAA with id 3072946
START:
lib1
✖ should return 1
Finished in 0.015 secs / 0.001 secs
SUMMARY:
✔ 0 tests completed
✖ 1 test failed
FAILED TESTS:
lib1
✖ should return 1
Chrome 48.0.2564 (Linux 0.0.0)
Error: SIMULATED ERROR
at foo (/home/danb/projects/so-test-project/tests.webpack.js:135:10 <- webpack:///src/lib2.js:13:8)
at Context.<anonymous> (/home/danb/projects/so-test-project/tests.webpack.js:93:31 <- webpack:///test/index.js:7:11)
在上面的最后第二行,它显示webpack:///src/lib2.js:13
了原始源中的正确位置。
为了获得该映射,我这样做了:https ://github.com/danielbush/webpack-babel-karma-sourcemap-coverage/commit/6ea992cae499dccc68488bcb3eaca642ae4ed24e
我想要做的是使用诸如伊斯坦布尔(或使用伊斯坦布尔的 isparta)之类的东西添加覆盖率,以便我可以在 coverage/ 中生成 HTML 覆盖率报告,显示未覆盖的行(可能) - 以及整体覆盖率百分比。
但我想确保我的堆栈跟踪仍然像上面那样正确映射源。
我已经尝试过 isparta-loader 和 isparta-instrumenter-loader 在 webpack 中转译和检测有问题的文件,但我的行号在堆栈跟踪(上图)中略有错误。似乎有许多类似 isparta 的东西在四处飘荡,并且文档不是超级友好的。
为了更一般地表达所有这些:我正在捆绑文件和测试,然后在浏览器中测试它(业力或通过更多手动方式),我希望我的源映射(在浏览器中)指向原始行代码,同时我想要一份覆盖率报告来引用未被覆盖的原始行和文件。