有沒有辦法斷言 mocha 運行的測驗數量?
例如:
afterAllTests(() => {
expect(mocha.numTestsRun).to.be.greaterThan(400);
});
我最近從mocha 7.1.2to升級,9.1.3并且-R速記引數停止作業。我的測驗套件從運行 ~400 個測驗變成只運行 ~10 個頂級測驗。切換回--recursive修復該問題,但我想確保不會再發生類似的事情。
我package.json看起來像這樣:
{
"scripts": {
"integrationTest": "mocha --recursive spec test/integration",
}
}
uj5u.com熱心網友回復:
與其計算到目前為止已經運行的測驗數量,我會計算已經用 Mocha 宣告的測驗數量。這確保無論執行順序如何,對測驗總數的檢查都保持有效。
要計算測驗總數,我們需要遞回計算頂級套件及其所有子套件中宣告的測驗數量(沒有捷徑 AFAIK)。
我們首先宣告一個新測驗(它可以放在任何地方),其唯一目的是計算測驗總數。
在這個測驗中,我們可以得到含套件用this.runnable().parent。反過來,套件還有一個屬性parent,可用于獲取下一個更高的包含套件,一直到頂級套件(由 Mocha 隱式定義)。頂級套件的屬性root設定為true。
現在,頂級套房,像任何其他的套件,具有性能tests和suites可使用可分支的所有后代套房槽和計數的試驗總數宣告。
it('total number of tests should be > 400', function() { // Use `function()`, don't use `() =>`...
let suite0 = this.runnable().parent; // ...because we need to access `this`.
while (!suite0.root) suite0 = suite0.parent;
// suite0 is now the top-level suite
// Recursiveliy count the number of tests in each suite
const countTests = (cnt, suite) => suite.suites.reduce(countTests, cnt suite.tests.length);
const totalTests = countTests(0, suite0);
expect(totalTests).to.be.greaterThan(400);
});
這將計算所有測驗,包括標記為skipped 的測驗(但我想這就是您想要的)。
還要注意 - 顯然 - 測驗計數測驗本身只有在您運行 Mocha 時不要忘記包含它時才有效。將測驗邏輯移至頂層before或after鉤子不會有太大變化,因為這些鉤子與在同一范圍內宣告的測驗具有相同的可見性。您可以將該測驗放在檔案spec夾內的檔案中,因此即使沒有--recursive標志也會執行它。作為最后的手段,您可以在環境變數中設定測驗數量并在 Mocha 之外檢查該值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/352833.html
標籤:javascript 节点.js 测试 摩卡.js
上一篇:測驗托管緩沖區的最佳實踐?
