Testfilterung
Filterung, Timeouts, gleichzeitige Ausführung von Suiten und Tests
CLI
Mit der CLI können Sie Testdateien nach Namen filtern:
$ vitest basic
Es werden nur Testdateien ausgeführt, die basic
im Namen enthalten, z.B.:
basic.test.ts
basic-foo.test.ts
basic/foo.test.ts
Sie können auch die Option -t, --testNamePattern <pattern>
verwenden, um Tests nach ihrem vollständigen Namen zu filtern. Dies ist nützlich, wenn Sie nach dem in der Datei definierten Testnamen statt nach dem Dateinamen selbst filtern möchten.
Seit Vitest 3 können Sie Tests auch nach Dateinamen und Zeilennummer spezifizieren:
$ vitest basic/foo.test.ts:10
WARNING
Beachten Sie, dass Vitest den vollständigen Dateinamen für die korrekte Funktion dieser Funktion benötigt. Dies kann ein relativer Pfad zum aktuellen Arbeitsverzeichnis oder ein absoluter Dateipfad sein.
$ vitest basic/foo.js:10 # ✅
$ vitest ./basic/foo.js:10 # ✅
$ vitest /users/project/basic/foo.js:10 # ✅
$ vitest foo:10 # ❌
$ vitest ./basic/foo:10 # ❌
Derzeit unterstützt Vitest keine Zeilenbereiche:
$ vitest basic/foo.test.ts:10, basic/foo.test.ts:25 # ✅
$ vitest basic/foo.test.ts:10-25 # ❌
Timeout angeben
Sie können optional einen Timeout in Millisekunden als drittes Argument für Tests übergeben. Der Standardwert ist 5 Sekunden.
import { test } from 'vitest';
test('name', async () => {
/* ... */
}, 1000);
Hooks können ebenfalls einen Timeout erhalten, wobei der Standardwert ebenfalls 5 Sekunden beträgt.
import { beforeAll } from 'vitest';
beforeAll(async () => {
/* ... */
}, 1000);
Suiten und Tests überspringen
Verwenden Sie .skip
, um die Ausführung bestimmter Suiten oder Tests zu überspringen:
import { assert, describe, it } from 'vitest';
describe.skip('skipped suite', () => {
it('test', () => {
// Suite übersprungen, kein Fehler
assert.equal(Math.sqrt(4), 3);
});
});
describe('suite', () => {
it.skip('skipped test', () => {
// Test übersprungen, kein Fehler
assert.equal(Math.sqrt(4), 3);
});
});
Suiten und Tests zur Ausführung auswählen
Verwenden Sie .only
, um nur bestimmte Suiten oder Tests auszuführen:
import { assert, describe, it } from 'vitest';
// Nur diese Suite (und andere mit .only markierte) werden ausgeführt
describe.only('suite', () => {
it('test', () => {
assert.equal(Math.sqrt(4), 3);
});
});
describe('another suite', () => {
it('skipped test', () => {
// Test übersprungen, da nur die mit .only markierten Tests ausgeführt werden
assert.equal(Math.sqrt(4), 3);
});
it.only('test', () => {
// Nur dieser Test (und andere mit .only markierte) werden ausgeführt
assert.equal(Math.sqrt(4), 2);
});
});
Nicht implementierte Suiten und Tests
Verwenden Sie .todo
, um Platzhalter für Suiten und Tests zu erstellen, die noch implementiert werden sollen:
import { describe, it } from 'vitest';
// Ein Eintrag wird im Bericht für diese Suite aufgeführt
describe.todo('unimplemented suite');
// Ein Eintrag wird im Bericht für diesen Test aufgeführt
describe('suite', () => {
it.todo('unimplemented test');
});