我有一個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,因爲它提供了更多的代碼覆蓋見解(例如分支)。如果毯子的伊斯坦布爾分支已經完成,那麼我會考慮切換。
我喜歡這個解決方案。我將等待一下,看看是否有其他答案。 –