我實際上正在嘗試爲我的nodeJS應用程序達到代碼覆蓋率的最高分數,我正在使用Mocha + Chai + Istanbul來確保此代碼覆蓋率。在崩潰恢復故事中分析nodejs應用程序的代碼覆蓋率
我的代碼應用程序的一部分專門用於恢復潛在的服務中斷,因此大多數應用程序對象都是在Redis中實時序列化的。
因此,當應用程序第一次啓動時,我專門從mongoDB加載數據。在崩潰恢復之後,我也從Redis加載數據。很明顯,我的應用沒有使用代碼的相同部分來執行這兩種初始化。
因此,伊斯坦布爾的死代碼報告不準確,如果我在第一或第二個案例中運行我的測試,報告會有所不同。
我正在尋找一種方法來模擬過程中斷而不殺死伊斯坦布爾進程,以便能夠獲得完整的伊斯坦布爾報告。
我嘗試用child_process來解決它:
var masterLogger = require("./storage/file-logger").master;
const exec = require("child_process").exec;
var redis_flush = exec("redis-cli -n 6 flushall");
var srv1;
var srv2;
redis_flush.on("close", function() {
masterLogger.fatal("Redis clear");
redis_flush = null;
masterLogger.fatal("Starting SRV1");
srv1 = exec("npm test");
srv1.on("close", function() {
masterLogger.fatal("SRV1 killed");
srv1 = null;
masterLogger.fatal("Starting SRV2");
srv2 = exec("npm test");
srv2.on("close", function() {
masterLogger.fatal("SRV2 killed");
srv2 = null;
});
});
});
process.on("SIGINT", function() {
if (redis_flush)
redis_flush.kill();
else if (srv1)
srv1.kill();
else if (srv2)
srv2.kill();
else
process.exit(0);
});
但伊斯坦布爾只爲這部分代碼提供代碼覆蓋報告(如果我達到了100%^^)...
注:NPM測試 - >用測試 ENV開始我的應用程序
問候