[英]How to use Mocha with npm run?
使用npm run運行Mocha測試,而不會出現ELIFECYCLE
錯誤。
在關於mocha和npm的最后一個問題之后,我發現Mocha結果返回失敗測試的數量。
現在,當使用npm運行腳本(通過npm run
)時,腳本必須返回0,否則npm將拋出ELIFECYCLE
錯誤並使腳本執行崩潰。
這顯然非常笨拙 ,因為在開發代碼時,測試應該失敗。 這是正常現象,我們不希望每次錯過斷言時代碼都崩潰。
這幾乎迫使我重新啟動所有內容,而令我震驚的是,在以前的npm版本中,這種崩潰行為不存在。
目前,我正在使用npm 3.10.3版本。
在運行測試時讀取npm error ELIFECYCLE之后,我看到了一種可能的解決方案。 但是由於此解決方案將抑制各種錯誤(甚至會導致應用程序崩潰),所以我寧願不實施它。
ELIFECYCLE
錯誤而完全崩潰整個應用程序? 任何幫助,將不勝感激。
您是否考慮過通過以下方式從代碼中運行Mocha:
const Mocha = require('mocha');
module.exports = () => {
// Instantiate a Mocha instance.
const mocha = new Mocha({
ui: 'bdd',
fullTrace: true,
});
const testDir = 'test/spec';
config.getGlobbedFiles(`${testDir}/**/*.spec.js`, './').forEach((filePath) => {
mocha.addFile(filePath);
});
// Run the tests.
mocha.run((failures) => {
process.exit(failures); // exit with non-zero status if there were failures
});
};
為了從gulp運行它,您可以使用:
const minimist = require('minimist');
const knownOptions = {
string: 'params',
default: {
params: '',
},
};
const options = minimist(process.argv.slice(2), knownOptions);
...
gulp.task('test', () => {
if (process.env.NODE_ENV !== 'test') {
throw new Error('Wrong NODE_ENV value. Tests must be ran with "test"');
}
// eslint-disable-next-line import/no-dynamic-require, global-require
return require('test/test')(options.params); // where `test/test` is test runner above
});
我尚未對此進行測試,但我認為如果您將腳本更新為以下內容:
"test": "mocha || true"
如果失敗,它將返回代碼0。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.