Spec-Zone.ru › QUnit

QUnit.on()

Категории: События обратного вызова, Интерфейс расширения.

добавлено в версии: 2.2.0.

Описание

QUnit.on( eventName, callback )

Регистрирует функцию обратного вызова, которая будет вызвана после возникновения указанного события.

Этот эмиттер событий — основной интерфейс для репортёров QUnit, плагинов и поддержки непрерывной интеграции. Он основан на стандарте CRI js-reporters и включает API репортера.

тип параметр описание
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: неудачных тестов не было, то есть все тесты завершились успешно, были пропущены или имели статус todo.
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: по крайней мере одна проверка завершилась неудачно или это тест 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 Трассировка стека; может быть не определена, если результат получен в старом браузере.
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 указывает на завершение запуска тестов. Оно возникает ровно один раз.

Событие runEnd обладает памятью (начиная с QUnit 2.24.0). Это означает, что можно подписаться на это событие, даже если оно уже возникло. Например, если вы создаёте систему интеграции, которая автоматизирует запуск тестов в браузере, и не можете надёжно добавить обработчик до завершения тестов. Вы можете добавить обработчик события runEnd позже. В этом случае он будет вызван немедленно. Это избавляет от необходимости разбирать HTML.

string status Сводный результат всех тестов, один из следующих:
failed: по крайней мере один тест завершился неудачно или произошла глобальная ошибка;
passed: неудачных тестов не было, то есть все тесты завершились успешно, были пропущены или имели статус todo. Если параметр QUnit.config.failOnZeroTests отключён, запуск также может завершиться успешно, если тестов не было.
Object testCounts Сводные данные о тестах:
number testCounts.passed Количество успешно пройденных тестов.
number testCounts.failed Количество неудачных тестов.
number testCounts.skipped Количество пропущенных тестов.
number testCounts.todo Количество тестов 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}`);
});

Событие error

Добавлено в версии: QUnit 2.17.0.

Событие error уведомляет плагины о неперехваченных глобальных ошибках во время запуска тестов.

См. также QUnit.onUncaughtException() — с его помощью можно сообщать о собственных неперехваченных ошибках.

Событие error обладает памятью (начиная с QUnit 2.24.1). Это означает, что можно подписаться на это событие, даже если оно уже возникло. Это повышает надёжность репортёров в системах автоматизации браузеров, где бывает трудно надёжно добавить обработчик между qunit.js и любым другим кодом.

Error|any error
QUnit.on('error', error => {
  console.error(error);
});

API репортера

Интерфейс командной строки QUnit принимает параметр --reporter, который загружает репортёр из модуля Node (например, пакета npm). Такой модуль должен экспортировать функцию init, которую вызовет QUnit и которой передаст объект QUnit; затем с его помощью можно вызвать QUnit.on(). Этот контракт называется API репортера.

Репортёр можно реализовать как обычную экспортируемую функцию или как класс со статическим методом init.

Пример: класс репортера

class MyReporter {
  static init (QUnit) {
    return new MyReporter(QUnit);
  }

  constructor (QUnit) {
    QUnit.on('error', this.onError.bind(this));
    QUnit.on('testEnd', this.onTestEnd.bind(this));
    QUnit.on('runEnd', this.onRunEnd.bind(this));
  }

  onError (error) {
  }

  onTestEnd (testEnd) {
  }

  onRunEnd (runEnd) {
  }
}

// CommonJS, or ES Module
module.exports = MyReporter;
export default MyReporter;

Пример: функция репортера

function init (QUnit) {
  QUnit.on('error', onError);
  QUnit.on('testEnd', onTestEnd);
  QUnit.on('runEnd', onRunEnd);

  function onError (error) {
  }
  function onTestEnd (testEnd) {
  }
  function onRunEnd (runEnd) {
  }
}

// CommonJS, or ES Module
module.exports.init = init;
export default { init };

© OpenJS Foundation and contributors.
Licensed under the MIT license.
https://qunitjs.com/api/callbacks/QUnit.on

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API