Filtragem de Testes
Filtragem, timeouts e execução concorrente para suítes e testes.
CLI
Você pode usar a CLI para filtrar arquivos de teste pelo nome:
$ vitest basic
Isso executará apenas os arquivos de teste que contêm basic
, por exemplo:
basic.test.ts
basic-foo.test.ts
basic/foo.test.ts
Você também pode usar a opção -t, --testNamePattern <pattern>
para filtrar testes pelo nome completo. Isso pode ser útil quando você deseja filtrar pelo nome definido dentro de um arquivo, em vez do nome do arquivo.
A partir do Vitest 3, você também pode especificar o teste pelo nome do arquivo e número da linha:
$ vitest basic/foo.test.ts:10
WARNING
Observe que o Vitest requer o nome completo do arquivo para que esse recurso funcione. Pode ser um caminho relativo ao diretório de trabalho atual ou um caminho de arquivo absoluto.
$ vitest basic/foo.js:10 # ✅
$ vitest ./basic/foo.js:10 # ✅
$ vitest /users/project/basic/foo.js:10 # ✅
$ vitest foo:10 # ❌
$ vitest ./basic/foo:10 # ❌
Atualmente, o Vitest não suporta intervalos de linhas:
$ vitest basic/foo.test.ts:10, basic/foo.test.ts:25 # ✅
$ vitest basic/foo.test.ts:10-25 # ❌
Especificando um Timeout
Você pode, opcionalmente, definir um timeout em milissegundos como um terceiro argumento para os testes. O padrão é 5 segundos.
import { test } from 'vitest';
test('name', async () => {
/* ... */
}, 1000);
Hooks também podem aceitar um timeout, com o mesmo limite padrão de 5 segundos.
import { beforeAll } from 'vitest';
beforeAll(async () => {
/* ... */
}, 1000);
Ignorando Suítes e Testes
Use .skip
para evitar a execução de certas suítes ou testes.
import { assert, describe, it } from 'vitest';
describe.skip('skipped suite', () => {
it('test', () => {
// Suíte ignorada, sem erro
assert.equal(Math.sqrt(4), 3);
});
});
describe('suite', () => {
it.skip('skipped test', () => {
// Teste ignorado, sem erro
assert.equal(Math.sqrt(4), 3);
});
});
Selecionando Suítes e Testes para Executar
Use .only
para executar apenas certas suítes ou testes.
import { assert, describe, it } from 'vitest';
// Apenas esta suíte (e outras marcadas com .only) serão executadas
describe.only('suite', () => {
it('test', () => {
assert.equal(Math.sqrt(4), 3);
});
});
describe('another suite', () => {
it('skipped test', () => {
// Teste ignorado, pois os testes estão sendo executados no modo .only
assert.equal(Math.sqrt(4), 3);
});
it.only('test', () => {
// Apenas este teste (e outros marcados com .only) serão executados
assert.equal(Math.sqrt(4), 2);
});
});
Suítes e Testes Não Implementados
Use .todo
para marcar suítes e testes que precisam ser implementados.
import { describe, it } from 'vitest';
// Uma entrada será exibida no relatório para esta suíte
describe.todo('unimplemented suite');
// Uma entrada será exibida no relatório para este teste
describe('suite', () => {
it.todo('unimplemented test');
});