Skip to content
Vitest 3
Main Navigation Guia & APIConfiguraçãoModo NavegadorAPI Avançada
3.2.0
2.1.9
1.6.1
0.34.6

Português – Brasil

English
简体中文
繁體中文
Español
Français
Русский
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Português – Brasil

English
简体中文
繁體中文
Español
Français
Русский
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Aparência

Sidebar Navigation

API

Node API

APIs Avançadas

API Vitest

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

API de Plugin

API do Runner

Reporters

Metadados da Tarefa

Guia

Executando Testes

Estendendo Relatores

Pool Personalizado

Configurando o Vitest

Referência da API de Teste

Nesta página

Executando Testes ​

WARNING

Este guia detalha o uso da API avançada para executar testes via script Node.js. Se seu objetivo é apenas executar testes, esta seção provavelmente não é necessária. Ela é destinada principalmente a autores de bibliotecas.

Alterações que quebram a compatibilidade podem não seguir o SemVer; por favor, fixe a versão do Vitest ao utilizar esta API experimental.

O Vitest oferece dois métodos para iniciar sua execução:

  • startVitest inicia o Vitest, verifica a instalação dos pacotes e executa os testes imediatamente.
  • createVitest apenas inicializa o Vitest, sem iniciar a execução dos testes.

startVitest ​

ts
import { startVitest } from 'vitest/node';

const vitest = await startVitest(
  'test',
  [], // Filtros da CLI
  {}, // Sobrescrita da configuração de teste
  {}, // Sobrescrita da configuração do Vite
  {} // Opções personalizadas do Vitest
);
const testModules = vitest.state.getTestModules();
for (const testModule of testModules) {
  console.log(testModule.moduleId, testModule.ok() ? 'passed' : 'failed');
}

TIP

As APIs TestModule, TestSuite e TestCase não são experimentais e seguem o SemVer desde o Vitest 2.1.

createVitest ​

Cria uma instância do Vitest sem executar testes.

O método createVitest não verifica a instalação dos pacotes necessários. Além disso, ele não considera as configurações config.standalone ou config.mergeReports. O Vitest não será encerrado automaticamente, mesmo que watch esteja desabilitado.

ts
import { createVitest } from 'vitest/node';

const vitest = await createVitest(
  'test',
  {}, // Sobrescrita da configuração de teste
  {}, // Sobrescrita da configuração do Vite
  {} // Opções personalizadas do Vitest
);

// Chamado quando `vitest.cancelCurrentRun()` é invocado
vitest.onCancel(() => {});
// Chamado durante a execução de `vitest.close()`
vitest.onClose(() => {});
// Chamado quando o Vitest reexecuta arquivos de teste
vitest.onTestsRerun(files => {});

try {
  // Isso definirá process.exitCode como 1 se os testes falharem,
  // e não fechará o processo automaticamente.
  await vitest.start(['my-filter']);
} catch (err) {
  // Isso pode lançar:
  // "FilesNotFoundError" caso nenhum arquivo seja encontrado.
  // "GitNotFoundError" com `--changed` e o repositório não estiver inicializado.
} finally {
  await vitest.close();
}

Se você pretende manter a instância do Vitest ativa, certifique-se de chamar pelo menos init. Isso inicializará os reporters e o provedor de cobertura, mas não executará nenhum teste. Também é recomendado habilitar o modo watch, mesmo que você não pretenda usar o watcher do Vitest, mas queira manter a instância em execução. O Vitest depende dessa flag para que alguns de seus recursos funcionem corretamente em um processo contínuo.

Após a inicialização dos reporters, utilize runTestSpecifications ou rerunTestSpecifications para executar testes, caso uma execução manual seja necessária:

ts
watcher.on('change', async file => {
  const specifications = vitest.getModuleSpecifications(file);
  if (specifications.length) {
    vitest.invalidateFile(file);
    // Você pode usar runTestSpecifications se os hooks "reporter.onWatcher*"
    // não devem ser chamados.
    await vitest.rerunTestSpecifications(specifications);
  }
});

WARNING

O exemplo acima ilustra um caso de uso para quando você desabilita o comportamento padrão do watcher. Por padrão, o Vitest reexecuta automaticamente os testes se os arquivos forem alterados.

Além disso, observe que getModuleSpecifications não resolverá arquivos de teste a menos que já tenham sido processados por globTestSpecifications. Se o arquivo foi recém-criado, use project.matchesGlobPattern em vez disso:

ts
watcher.on('add', async file => {
  const specifications = [];
  for (const project of vitest.projects) {
    if (project.matchesGlobPattern(file)) {
      specifications.push(project.createSpecification(file));
    }
  }

  if (specifications.length) {
    await vitest.rerunTestSpecifications(specifications);
  }
});

Se você precisar desabilitar o watcher, pode passar server.watch: null a partir do Vite 5.3 ou server.watch: { ignored: ['*/*'] } em uma configuração do Vite:

ts
await createVitest(
  'test',
  {},
  {
    plugins: [
      {
        name: 'stop-watcher',
        async configureServer(server) {
          await server.watcher.close();
        },
      },
    ],
    server: {
      watch: null,
    },
  }
);
Pager
AnteriorMetadados da Tarefa
PróximoEstendendo Relatores

Distribuído sob a Licença MIT.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/advanced/guide/tests

Distribuído sob a Licença MIT.

Copyright (c) 2021-Present Vitest Team