RequireJS/AMD模块中的JavaScript代码覆盖率

Ber*_*rdo 8 javascript unit-testing code-coverage requirejs js-amd

简短而看似愚蠢的问题,因为这么简单,你会想到无处不在:有没有人在RequireJS前端项目(非NodeJS)中使用任何类型的代码覆盖?

这似乎是一个愚蠢的问题,因为JS世界中TDD方法的普及以及AMD开发的接管.

我已经尝试了一百万种方法,但都缺乏.我的项目是一个带有Jasmine单元测试的Backbone项目:

1)带有Coverage插件的JSTD.JSTD无法正确加载和检测AMD模块.如果我在单个js文件上运行JSTD(由RequireJS优化器组合),那么代码覆盖率可以很好地工作,除了收集覆盖范围并在ENTIRE文件上定义度量标准.太棒了,这没用,因为它包括第三方库,因为我无法针对单个单元来帮助测试开发.哎呀.

2)JSCoverage - 总失败,不喜欢AMD模块.

3)特定于Chrome和Firebug的"现场"指导员 - 失败,不喜欢AMD模块.

我尝试的每一种方法似乎都需要大量的定制工作.那么也许我需要从头开始自定义解决方案?

如何使用以下方法:将RequireJS优化器扩展为仪器代码并创建覆盖范围.它将是内存中的检测,可以使用require.config({instrument:true})标志启用.每次需要加载模块时,它会自动对其进行检测并将其放置在模块库中.覆盖率统计信息收集在全局require对象下的对象中,并且可以从任何地方访问,例如,在Jasmine测试运行之后.

输入?

Ale*_*lle 6

Blanket.js使用修改后的RequireJS加载程序与Qunit一起使用.我们正致力于Jasmine的支持,并乐意接受任何反馈或建议.

如果您的项目正在投入生产,Blanket.js不适合您,但如果它只是一个侧面项目,那么它是否值得查看它是否符合您的需求.

编辑:Blanket现在支持Jasmine.