【发布时间】:2016-06-02 16:39:24
【问题描述】:
我在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
我想要做的是使用诸如 istanbul(或使用 istanbul 的 isparta)之类的东西添加覆盖率,以便我可以在 coverage/ 中生成 HTML 覆盖率报告,显示未覆盖的行(可能)——以及作为整体覆盖率。
但我想确保我的堆栈跟踪仍然像上面那样正确映射源。
我已经尝试使用 isparta-loader 和 isparta-instrumenter-loader 在 webpack 中转译和检测有问题的文件,但我的行号在堆栈跟踪(上图)中略有错误。似乎有许多类似 isparta 的东西在四处飘荡,文档也不是超级友好。
更一般地表达所有这些:我正在捆绑文件和测试,然后在浏览器中测试它(业力或通过更多手动方式),我希望我的源映射(在浏览器中)指向原始代码行和同时我想要一份覆盖率报告来引用未被覆盖的原始行和文件。
【问题讨论】:
标签: javascript webpack istanbul karma-coverage isparta