Skip to content
Vitest 3
Main Navigation Руководство & APIКонфигурацияРежим браузераРасширенный API
3.2.0
2.1.9
1.6.1
0.34.6

Русский

English
简体中文
繁體中文
Español
Français
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Русский

English
简体中文
繁體中文
Español
Français
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Внешний вид

Sidebar Navigation

API

Node API

Расширенный API

Vitest API

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

API плагина

Runner API

Репортеры

Метаданные задачи

Руководство

Запуск тестов

Расширение репортеров

Пользовательский пул

Настройка Vitest

Справочник по API тестирования

Содержание страницы

TestSuite ​

Класс TestSuite представляет собой отдельный набор тестов. Этот класс доступен только в основном потоке выполнения. При работе с задачами времени выполнения обратитесь к разделу "Runner API".

Экземпляр TestSuite всегда имеет свойство type со значением suite. Вы можете использовать его для различения различных типов задач:

ts
if (task.type === 'suite') {
  task; // TestSuite
}

project ​

Это ссылка на TestProject, к которому принадлежит данный сьют.

module ​

Это прямая ссылка на TestModule, где определен данный сьют.

name ​

Это имя сьюта, переданное функции describe.

ts
import { describe } from 'vitest';

// [!code word:'the validation logic']
describe('the validation logic', () => {
  // ...
});

fullName ​

Полное имя сьюта, включающее все родительские сьюты, разделенные символом >. Например, для данного сьюта полное имя будет "the validation logic > validating cities":

ts
import { describe, test } from 'vitest';

// [!code word:'the validation logic']
// [!code word:'validating cities']
describe('the validation logic', () => {
  describe('validating cities', () => {
    // ...
  });
});

id ​

Это уникальный идентификатор сьюта. Этот ID является детерминированным и будет одинаковым для одного и того же сьюта при многократных запусках. ID формируется на основе имени проекта, ID модуля и порядка сьюта.

Формат ID выглядит следующим образом:

1223128da3_0_0_0
^^^^^^^^^^ хэш файла
           ^ индекс сьюта
             ^ индекс вложенного сьюта
               ^ индекс теста

TIP

Вы можете сгенерировать хэш файла с помощью функции generateFileHash из vitest/node, которая доступна начиная с Vitest 3:

ts
import { generateFileHash } from 'vitest/node';

const hash = generateFileHash(
  '/file/path.js', // относительный путь
  undefined // имя проекта или `undefined`, если не установлено
);

DANGER

Не пытайтесь парсить ID. Он может начинаться с минуса: -1223128da3_0_0_0.

location ​

Местоположение в модуле, где определен сьют. Местоположения собираются только если includeTaskLocation включен в конфигурации. Обратите внимание, что эта опция автоматически включается, если используются флаги --reporter=html, --ui или --browser.

Местоположение этого сьюта будет равно { line: 3, column: 1 }:

ts
import { describe } from 'vitest'

describe('the validation works correctly', () => {
  // ...
})
1
2
3
4
5

parent ​

Родительский сьют. Если сьют вызван непосредственно внутри модуля, родителем будет сам модуль.

options ​

ts
interface TaskOptions {
  readonly each: boolean | undefined;
  readonly fails: boolean | undefined;
  readonly concurrent: boolean | undefined;
  readonly shuffle: boolean | undefined;
  readonly retry: number | undefined;
  readonly repeats: number | undefined;
  readonly mode: 'run' | 'only' | 'skip' | 'todo';
}

Опции, с которыми был собран сьют.

children ​

Это коллекция всех сьютов и тестов, содержащихся в текущем сьюте.

ts
for (const task of suite.children) {
  if (task.type === 'test') {
    console.log('test', task.fullName);
  } else {
    // task is TaskSuite
    console.log('suite', task.name);
  }
}

WARNING

Обратите внимание, что suite.children перебирает только первый уровень вложенности и не углубляется. Если вам нужно перебрать все тесты или сьюты, используйте children.allTests() или children.allSuites(). Если вам нужно перебрать все элементы, используйте рекурсивную функцию:

ts
function visit(collection: TestCollection) {
  for (const task of collection) {
    if (task.type === 'suite') {
      // report a suite
      visit(task.children);
    } else {
      // report a test
    }
  }
}

ok ​

ts
function ok(): boolean;

Проверяет, есть ли в сьюте проваленные тесты. Это также вернет false, если сбор сьюта завершился неудачей. В этом случае проверьте errors() на наличие выброшенных ошибок.

state ​

ts
function state(): TestSuiteState;

Проверяет состояние выполнения сьюта. Возможные возвращаемые значения:

  • pending: тесты в этом сьюте еще не завершили выполнение.
  • failed: этот сьют содержит проваленные тесты или их не удалось собрать. Если errors() не пуст, это означает, что сьют не смог собрать тесты.
  • passed: каждый тест внутри этого сьюта успешно пройден.
  • skipped: этот сьют был пропущен во время сбора.

WARNING

Обратите внимание, что модуль теста также имеет метод state, который возвращает те же значения, но может также возвращать дополнительное состояние queued, если модуль еще не был выполнен.

errors ​

ts
function errors(): TestError[];

Ошибки, произошедшие вне процесса выполнения теста во время сбора, например, синтаксические ошибки.

ts
import { describe } from 'vitest';

describe('collection failed', () => {
  throw new Error('a custom error');
});

WARNING

Обратите внимание, что ошибки сериализуются в простые объекты: проверка instanceof Error всегда будет возвращать false.

meta 3.1.0+ ​

ts
function meta(): TaskMeta;

Пользовательские метаданные, которые были прикреплены к сьюту во время его выполнения или сбора. Метаданные могут быть прикреплены путем присвоения свойства объекту task.meta во время выполнения теста:

ts
import { test } from 'vitest';

describe('the validation works correctly', task => {
  // установить свойство "decorated" во время сбора
  task.meta.decorated = false;

  test('some test', ({ task }) => {
    // установить свойство "decorated" во время выполнения теста, которое будет доступно
    // только в хуке onTestCaseReady
    task.suite.meta.decorated = false;
  });
});

TIP

Если метаданные были прикреплены во время сбора (вне функции test), они будут доступны в хуке onTestModuleCollected в пользовательском репортере.

Pager
Предыдущая страницаTestCase
Следующая страницаTestModule

Выпущено на условиях лицензии MIT.

Авторские права (c) 2021-Present Vitest Team

https://vitest.dev/advanced/api/test-suite

Выпущено на условиях лицензии MIT.

Авторские права (c) 2021-Present Vitest Team