我想在執行一堆測試用例時終止所有其餘的測試用例。如何終止摩卡測試運行?
我正在用ui界面(在瀏覽器上)使用摩卡。
我如何強制終止測試運行?
呼叫mocha.run()
有什麼東西正好相反。像'mocha.stopRun()'。我在文檔中找不到任何東西。
我想在執行一堆測試用例時終止所有其餘的測試用例。如何終止摩卡測試運行?
我正在用ui界面(在瀏覽器上)使用摩卡。
我如何強制終止測試運行?
呼叫mocha.run()
有什麼東西正好相反。像'mocha.stopRun()'。我在文檔中找不到任何東西。
我還沒有找到由mocha導出的公開API,要求它在任意位置終止套件。但是,在撥打mocha.run()
之前,您可以撥打mocha.bail()
,讓摩卡在測試失敗後立即停止。如果你希望能夠有沒有故障,杜絕甚至,這裏有一個辦法做到這一點:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8"/>
<link href="node_modules/mocha/mocha.css" type="text/css" media="screen" rel="stylesheet" />
<script type="text/javascript" src="node_modules/mocha/mocha.js"></script>
</head>
<body>
<button id="terminate">Terminate Mocha</button>
<div id="mocha"></div>
<script>
var terminate = document.querySelector("#terminate");
var runner;
var terminated = false;
terminate.addEventListener("click", function() {
if (runner) {
// This tells the test suite to bail as soon as possible.
runner.suite.bail(true);
// Simulate an uncaught exception.
runner.uncaught(Error("FORCED TERMINATION"));
terminated = true;
}
return false;
});
mocha.setup("bdd");
describe("test", function() {
this.timeout(5 * 1000);
it("first", function (done) {
console.log("first: do nothing");
done();
});
it("second", function (done) {
console.log("second is executing");
setTimeout(function() {
// Don't call done() if we forcibly terminated mocha.
// If we called done() no matter what, then if we terminated
// the run while this test is running, mocha would mark it
// as failed, and succeeded!
if (!terminated)
done();
}, 2.5 * 1000);
});
it("third", function (done) {
console.log("third: do nothing");
done();
});
});
runner = mocha.run();
</script>
</body>
</html>
如果單擊「終止摩卡」按鈕,而摩卡忙於第二個測試,它會導致第二次測試失敗並且第三次測試不會執行。您可以通過查看控制檯中的輸出來驗證這一點。
如果您想以此作爲停止自己的測試套件的方法,您可能希望使用由「終止摩卡」按鈕運行的代碼註冊異步操作,以便儘快終止這些操作,如果可能的話。請注意,runner.suite.bail(true)
不是公共API的組成部分。我已經嘗試起初撥打mocha.bail()
,但在測試運行中調用它不起作用。 (只有在致電mocha.run()
之前撥打電話纔有效。)runner.uncaught(...)
也是私人的。
感謝..可以ü請回答問題以及http://stackoverflow.com/questions/20328172/how-to-get-information-of-mocha-test-type-object – codeofnode
你是從命令行還是在瀏覽器中運行mocha? – Louis
瀏覽器 – codeofnode
裏面我找不到在摩卡來源任何會認爲這是可能的:( – robertklep