Filtrowanie testów
Filtrowanie, limity czasu oraz zarządzanie współbieżnością w zestawach i testach.
CLI
Możesz użyć interfejsu CLI do filtrowania plików testowych po nazwie:
$ vitest basic
Spowoduje to wykonanie tylko tych plików testowych, które zawierają basic
, np.:
basic.test.ts
basic-foo.test.ts
basic/foo.test.ts
Możesz również użyć opcji -t, --testNamePattern <pattern>
, aby filtrować testy według ich pełnej nazwy. Jest to przydatne, gdy chcesz filtrować według nazwy zdefiniowanej w pliku, a nie tylko według nazwy samego pliku.
Począwszy od Vitest 3, możesz również wskazać test, podając nazwę pliku i numer linii:
$ vitest basic/foo.test.ts:10
WARNING
Pamiętaj, że Vitest wymaga podania pełnej nazwy pliku, aby ta funkcja działała. Może to być ścieżka względna względem bieżącego katalogu roboczego lub ścieżka absolutna.
$ vitest basic/foo.js:10 # ✅
$ vitest ./basic/foo.js:10 # ✅
$ vitest /users/project/basic/foo.js:10 # ✅
$ vitest foo:10 # ❌
$ vitest ./basic/foo:10 # ❌
Obecnie Vitest nie obsługuje również zakresów linii:
$ vitest basic/foo.test.ts:10, basic/foo.test.ts:25 # ✅
$ vitest basic/foo.test.ts:10-25 # ❌
Określanie limitu czasu
Możesz opcjonalnie przekazać limit czasu w milisekundach jako trzeci argument dla testów. Domyślny limit wynosi 5 sekund.
import { test } from 'vitest';
test('name', async () => {
/* ... */
}, 1000);
Hooki również mogą przyjmować limit czasu, z takim samym domyślnym limitem 5 sekund.
import { beforeAll } from 'vitest';
beforeAll(async () => {
/* ... */
}, 1000);
Pomijanie zestawów i testów
Użyj .skip
, aby pominąć uruchamianie niektórych zestawów lub testów:
import { assert, describe, it } from 'vitest';
describe.skip('skipped suite', () => {
it('test', () => {
// Zestaw został pominięty, bez błędu
assert.equal(Math.sqrt(4), 3);
});
});
describe('suite', () => {
it.skip('skipped test', () => {
// Test pominięty, bez błędu
assert.equal(Math.sqrt(4), 3);
});
});
Wybieranie zestawów i testów do uruchomienia
Użyj .only
, aby uruchomić tylko wybrane zestawy lub testy:
import { assert, describe, it } from 'vitest';
// Tylko ten zestaw (i inne oznaczone jako `only`) zostanie uruchomiony
describe.only('suite', () => {
it('test', () => {
assert.equal(Math.sqrt(4), 3);
});
});
describe('another suite', () => {
it('skipped test', () => {
// Test pominięty, ponieważ testy są uruchamiane w trybie Only
assert.equal(Math.sqrt(4), 3);
});
it.only('test', () => {
// Tylko ten test (i inne oznaczone jako `only`) zostanie uruchomiony
assert.equal(Math.sqrt(4), 2);
});
});
Niezaimplementowane zestawy i testy
Użyj .todo
, aby oznaczyć zestawy i testy, które powinny zostać zaimplementowane w przyszłości:
import { describe, it } from 'vitest';
// W raporcie zostanie wyświetlona pozycja dla tego zestawu
describe.todo('unimplemented suite');
// W raporcie zostanie wyświetlona pozycja dla tego testu
describe('suite', () => {
it.todo('unimplemented test');
});