我有一个node.js库,我已经为BDD设置了mocha和chai。我还添加了代码覆盖范围istanbul。一切都通过grunt任务运行。更好的方式来动态更改测试代码覆盖率的require语句?
我挣扎了一会儿,终于在基于我的设置在此存储库上的基础上工作后,我终于找到了它:https://github.com/morkai/h5.buffers。它的工作原理,但我不喜欢的实施。
grunt-istanbul插件处理文件,设置环境变量,并且测试使用环境变量来查找仪表测试的位置。这是我不喜欢的最后一部分。
//Gruntfile.js
// ...
env: {
"default": {
LIB_FOR_TESTS_DIR: srcLibForTestsDir
},
coverage: {
LIB_FOR_TESTS_DIR: lcovLibForTestsDir
}
}
// ...
然后在测试文件,代码:
var FooClient = require((process.env.LIB_FOR_TESTS_DIR || '../lib') + '/foo-client.js');
我还使用在测试中运行测试文件之前所需的所有初始化一个帮手。所以我有两个想法;
使用测试助手在文件拉动和隐藏的细节有:
var foo = require('./test-helper.js').foo; var FooClient = foo.FooClient; var ThatOtherThing = foo.ThatOtherThing;
使用测试运行?我已经看到了这个参考,但是我没有找到关于它和最佳实践的很多信息。
有没有更好的方法?
P.S.如果有人对这个问题有一个更好的标题建议,我愿意接受。
P.P.S.请不要告诉我在你的答案中切换到毛毯。我对两者进行了评估并决定使用istanbul,因为它提供了更多的代码覆盖见解(例如分支)。如果毯子的伊斯坦布尔分支已经完成,那么我会考虑切换。
我喜欢这个解决方案。我将等待一下,看看是否有其他答案。 –