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 тестирования

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

TestCase ​

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

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

ts
if (task.type === 'test') {
  task; // TestCase
}

project ​

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

module ​

Это прямая ссылка на TestModule, в котором определен тест.

name ​

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

ts
import { test } from 'vitest';

// [!code word:'the validation works correctly']
test('the validation works correctly', () => {
  // ...
});

fullName ​

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

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

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

id ​

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

ID имеет следующий формат:

1223128da3_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 { test } from 'vitest'

test('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';
}

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

ok ​

ts
function ok(): boolean;

Проверяет, не привел ли тест к сбою тестового набора. Если тест еще не завершен или был пропущен, функция вернет true.

meta ​

ts
function meta(): TaskMeta;

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

ts
import { test } from 'vitest';

test('the validation works correctly', ({ task }) => {
  // ...

  task.meta.decorated = false;
});

Если тест еще не завершил выполнение, метаданные будут пустым объектом.

result ​

ts
function result(): TestResult;

Результаты теста. Если тест еще не завершен или только что был собран, результат будет равен TestResultPending:

ts
export interface TestResultPending {
  /**
   * Тест был собран, но еще не завершен.
   */
  readonly state: 'pending';
  /**
   * Тесты в состоянии ожидания не имеют ошибок.
   */
  readonly errors: undefined;
}

Если тест был пропущен, возвращаемое значение будет TestResultSkipped:

ts
interface TestResultSkipped {
  /**
   * Тест был пропущен посредством флага `skip` или `todo`.
   * Вы можете увидеть, какой из них был использован в значении опции `options.mode`.
   */
  readonly state: 'skipped';
  /**
   * Пропущенные тесты не имеют ошибок.
   */
  readonly errors: undefined;
  /**
   * Пользовательская заметка, переданная функции `ctx.skip(note)`.
   */
  readonly note: string | undefined;
}

TIP

Если тест был пропущен из-за того, что другой тест имеет флаг only, options.mode будет равно skip.

Если тест завершился неудачей, возвращаемое значение будет TestResultFailed:

ts
interface TestResultFailed {
  /**
   * Тест не удалось выполнить.
   */
  readonly state: 'failed';
  /**
   * Ошибки, которые возникли во время выполнения теста.
   */
  readonly errors: ReadonlyArray<TestError>;
}

Если тест прошел, возвращаемое значение будет TestResultPassed:

ts
interface TestResultPassed {
  /**
   * Тест пройден успешно.
   */
  readonly state: 'passed';
  /**
   * Ошибки, которые возникли во время выполнения теста.
   */
  readonly errors: ReadonlyArray<TestError> | undefined;
}

WARNING

Обратите внимание, что тест со статусом passed все еще может иметь связанные ошибки — это может произойти, если retry сработал хотя бы один раз.

diagnostic ​

ts
function diagnostic(): TestDiagnostic | undefined;

Полезная информация о тесте, такая как продолжительность, использование памяти и т. д.:

ts
interface TestDiagnostic {
  /**
   * Превышает ли продолжительность теста `slowTestThreshold`.
   */
  readonly slow: boolean;
  /**
   * Объем памяти, потребляемой тестом, в байтах.
   * Это значение доступно только если тест был выполнен с использованием флага `logHeapUsage`.
   */
  readonly heap: number | undefined;
  /**
   * Продолжительность выполнения теста в мс.
   */
  readonly duration: number;
  /**
   * Время в мс, когда тест начался.
   */
  readonly startTime: number;
  /**
   * Количество повторных попыток выполнения теста.
   */
  readonly retryCount: number;
  /**
   * Количество раз, когда тест был выполнен повторно, как настроено опцией `repeats`.
   * Это значение может быть ниже, если тест завершился неудачей во время повторного выполнения и механизм `retry` не настроен.
   */
  readonly repeatCount: number;
  /**
   * Успешно ли завершился тест со второй попытки.
   */
  readonly flaky: boolean;
}

INFO

diagnostic() вернет undefined, если тест еще не был запланирован к выполнению.

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

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

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

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

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

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