QUnit.on()

添加的版本:2.2.0

說明

QUnit.on( eventName, callback )

注冊回調以在發出指定事件時觸發。

此 API 實現了 js-reporters CRI standard ,並且是供持續集成插件和其他報告軟件使用的主要接口。

類型 參數 說明
string eventName 事件的名稱。
Function callback 一個回調函數。

runStart 事件

runStart 事件指示測試運行的開始。它隻發出一次,並且在任何其他事件之前發出。

Object testCounts 匯總有關測試的計數。
number testCounts.total 注冊測試的總數。
QUnit.on('runStart', runStart => {
  console.log(`Test plan: ${runStart.testCounts.total}`);
});

suiteStart 事件

suiteStart 事件表示模塊的開始。最終會出現相應的suiteEnd 事件。

string name 模塊的名稱。
Array<string> fullName 一個或多個字符串的列表,包含(按順序)任何祖先模塊的名稱和當前模塊的名稱。
QUnit.on('suiteStart', suiteStart => {
  console.log('suiteStart', suiteStart);
  // name: 'my module'
  // fullName: ['grandparent', 'parent', 'my module']
});

suiteEnd 事件

suiteEnd 事件指示模塊的結束。它在其相應的 suiteStart 事件之後發出。

string name 模塊的名稱。
Array<string> fullName 一個或多個字符串的列表,包含(按順序)任何祖先模塊的名稱和當前模塊的名稱。
string status 此模塊中測試的匯總結果,其中之一:
failed:至少一項測試失敗;
passed:沒有失敗的測試,這意味著隻有通過、跳過或待辦狀態的測試。
number runtime 模塊的持續時間(以毫秒為單位)。
QUnit.on('suiteEnd', suiteEnd => {
  console.log(suiteEnd);
  // …
});

testStart 事件

testStart 事件表示測試的開始。最終會出現相應的testEnd 事件。

string name 測試名稱。
string|null moduleName 測試所屬的模塊,或 null 用於全局測試。
Array<string> fullName 列出(按順序)任何祖先模塊的名稱和測試本身的名稱。
QUnit.on('testStart', testStart => {
  console.log(testStart);
  // name: 'my test'
  // moduleName: 'my module'
  // fullName: ['parent', 'my module', 'my test']

  // name: 'global test'
  // moduleName: null
  // fullName: ['global test']
});

testEnd 事件

testEnd 事件表示測試結束。它在其相應的 testStart 事件之後發出。

testEnd 對象的屬性:

string name 測試名稱。
string|null moduleName 測試所屬的模塊,或 null 用於全局測試。
Array<string> fullName 列出(按順序)任何祖先模塊的名稱和測試本身的名稱。
string status 測試結果,其中之一:
passed:所有斷言通過或未找到斷言;
failed: 至少一個斷言失敗或者它是一個QUnit.test.todo()不再有任何失敗的斷言;
skipped:故意不運行測試;或者
todo:測試是“todo”並且仍然有一個失敗的斷言。
number runtime 測試的持續時間(以毫秒為單位)。
Array<FailedAssertion> errors 對於有狀態的測試failed或者todo,將至少有一個失敗的斷言。但是,如果狀態為failed由於 “todo” 測試沒有失敗的斷言。

請注意,所有陰性測試結果都以這種方式傳達其詳細信息。例如,超時、未捕獲的錯誤和全局汙染還合成一個失敗的斷言。

FailedAssertion 對象的屬性:

boolean passed 失敗的斷言為 False。
string|undefined message 斷言檢查內容的說明。
any actual 傳遞給斷言的實際值。
any expected 傳遞給斷言的期望值。
string|undefined stack 堆棧跟蹤,如果結果來自舊的 Web 瀏覽器,則可能未定義。
QUnit.on('testEnd', testEnd => {
  if (testEnd.status === 'failed') {
    console.error('Failed! ' + testEnd.fullName.join(' > '));
    testEnd.errors.forEach(assertion => {
      console.error(assertion);
      // message: speedometer
      // actual: 75
      // expected: 88
      // stack: at dmc.test.js:12
    });
  }
});

runEnd 事件

runEnd 事件指示測試運行的結束。它隻發出一次。

string status 所有測試的匯總結果,其中之一:
failed:至少一項測試失敗或發生全局錯誤;
passed:沒有失敗的測試,這意味著隻有通過、跳過或待辦狀態的測試。如果QUnit.config.failOnZeroTests被禁用,那麽如果沒有測試,運行也可能通過。
Object testCounts 關於測試的匯總計數:
number testCounts.passed 通過的測試數。
number testCounts.failed 失敗的測試數。
number testCounts.skipped 跳過的測試數。
number testCounts.todo 待辦事項測試的數量。
number testCounts.total 測試的總數,等於上述屬性的總和。
number runtime 運行的總持續時間(以毫秒為單位)。
QUnit.on('runEnd', runEnd => {
  console.log(`Passed: ${runEnd.passed}`);
  console.log(`Failed: ${runEnd.failed}`);
  console.log(`Skipped: ${runEnd.skipped}`);
  console.log(`Todo: ${runEnd.todo}`);
  console.log(`Total: ${runEnd.total}`);
});