简而言之,作者想在RequireJS前端项目中使用代码覆盖率工具,但是尝试了多种方法都无法正常工作。现有的工具对AMD模块支持不佳,或者覆盖范围过大。作者考虑是否需要从头开始开发一个自定义解决方案:通过扩展RequireJS优化器实现内存中的代码仪器和覆盖统计,可以在Jasmine测试运行后查看全局Require对象下的覆盖统计数据。询问大家对这个想法的看法。
Blanket.js使用修改过的RequireJS加载器与Qunit兼容。我们正在处理Jasmine支持,欢迎任何反馈或建议。
如果您的项目将进入生产阶段,那么Blanket.js并不适用于您,但如果它只是一个副业项目,那么看看它是否符合您的需求也许会有所帮助。
编辑:现在Blanket已经支持Jasmine了。
事实证明,Node-Coverage提供了一个与AMD无关的接口,可以通过其自己的服务器向需要插装代码的RequireJS和Jasmine提供服务。
虽然这种方法不需要运行单独的服务器,但我仍然会花些时间来完善我开始开发的RequireJS覆盖率实现。
mochawrapper
我刚写了一个基于mocha、jscoverage和node的assert的node模块,用于自动化测试覆盖率报告。你不需要修改require或使用make或环境变量。
它托管在github上:mochawrapper
jscoverage可能无法在浏览器中运行,所以你可能想看看:bunker,它是基于uglify-js的。
你对AMD模块和JSCoverage有什么具体的问题?我有一个使用AMD模块的设置(QUnit/PhantomJS/JSCoverage)。
也许你只是忘记在require.config中正确设置库路径了?
当我将库路径更改为使用被检测代码而不是“正常”文件时,一切都正常了。
请查看我最近发布的项目,用于生成简单的JavaScript浏览器覆盖率报告,JSCovReporter https://github.com/TwoApart/JSCovReporter