Фильтрация тестов
Фильтрация, таймауты, конкурентное выполнение тестов и наборов
CLI
Вы можете фильтровать тестовые файлы по имени через CLI:
$ vitest basic
Будут выполнены только тестовые файлы, в названии которых содержится basic
, например:
basic.test.ts
basic-foo.test.ts
basic/foo.test.ts
Вы также можете использовать опцию -t, --testNamePattern <pattern>
для фильтрации тестов по полному имени. Это полезно, если требуется фильтровать по имени теста, определенному внутри файла, а не по имени самого файла.
Начиная с Vitest 3, вы также можете указать тест по имени файла и номеру строки:
$ vitest basic/foo.test.ts:10
WARNING
Обратите внимание: для этой функции Vitest требует полного имени файла. Оно может быть относительным к текущему рабочему каталогу или абсолютным путём к файлу.
$ vitest basic/foo.js:10 # ✅
$ vitest ./basic/foo.js:10 # ✅
$ vitest /users/project/basic/foo.js:10 # ✅
$ vitest foo:10 # ❌
$ vitest ./basic/foo:10 # ❌
На данный момент Vitest не поддерживает диапазоны строк:
$ vitest basic/foo.test.ts:10, basic/foo.test.ts:25 # ✅
$ vitest basic/foo.test.ts:10-25 # ❌
Указание таймаута
Вы можете опционально передать таймаут в миллисекундах в качестве третьего аргумента для тестов. По умолчанию установлено 5 секунд.
import { test } from 'vitest';
test('name', async () => {
/* ... */
}, 1000);
Хуки также поддерживают таймаут, по умолчанию 5 секунд.
import { beforeAll } from 'vitest';
beforeAll(async () => {
/* ... */
}, 1000);
Пропуск наборов и тестов
Используйте .skip
для пропуска выполнения определенных наборов или тестов:
import { assert, describe, it } from 'vitest';
describe.skip('skipped suite', () => {
it('test', () => {
// Набор тестов пропущен, ошибок не возникло
assert.equal(Math.sqrt(4), 3);
});
});
describe('suite', () => {
it.skip('skipped test', () => {
// Тест пропущен, ошибок не возникло
assert.equal(Math.sqrt(4), 3);
});
});
Выбор наборов и тестов для запуска
Используйте .only
, чтобы запускать только определенные наборы или тесты:
import { assert, describe, it } from 'vitest';
// Запускается только этот набор (и другие с меткой only)
describe.only('suite', () => {
it('test', () => {
assert.equal(Math.sqrt(4), 3);
});
});
describe('another suite', () => {
it('skipped test', () => {
// Тест пропущен, так как тесты выполняются в режиме only
assert.equal(Math.sqrt(4), 3);
});
it.only('test', () => {
// Запускается только этот тест (и другие с меткой only)
assert.equal(Math.sqrt(4), 2);
});
});
Не реализованные наборы и тесты
Используйте .todo
для создания заглушек наборов и тестов, которые еще не реализованы:
import { describe, it } from 'vitest';
// В отчете будет отображена запись по этому набору
describe.todo('unimplemented suite');
// В отчете будет отображена запись по этому тесту
describe('suite', () => {
it.todo('unimplemented test');
});