我有一个 node.js 库,我已经为 BDD 设置了mocha和chai。我还使用istanbul添加了代码覆盖率。一切都通过grunt任务运行。
我挣扎了一段时间,在我的设置基于这个存储库后,我终于让它工作了: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;
使用测试运行器?我已经看到了对此的引用,但我没有找到很多关于它和最佳实践的信息。
有没有更好的办法?
PS如果有人对这个问题有一个更好的标题的建议,我愿意接受。
PPS请不要告诉我在你的回答中切换到毯子。我对两者都进行了评估并决定选择伊斯坦布尔,因为它提供了更多代码覆盖率见解(例如,分支)。如果毯子的伊斯坦布尔分支完成了,那么我会考虑切换。