Skip to content
Vitest 0
Main Navigation GuiaAPIConfiguraçãoAvançado
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

Avançado

API do Node

Executor de Teste

Metadados da Tarefa

Estendendo os reporters padrão

Nesta página

Executor de Teste ​

WARNING

Esta é uma API avançada. Se você está apenas executando testes, provavelmente não precisa disso. É utilizada principalmente por autores de bibliotecas.

Você pode especificar o caminho para seu executor de testes com a opção runner no seu arquivo de configuração. Este arquivo deve ter uma exportação padrão com uma classe que implementa estes métodos:

ts
export interface VitestRunner {
  /**
   * Primeira ação a ser executada antes de coletar e executar os testes.
   */
  onBeforeCollect?(paths: string[]): unknown;
  /**
   * Chamado após coletar os testes e antes de "onBeforeRun".
   */
  onCollected?(files: File[]): unknown;

  /**
   * Chamado quando o executor de testes deve cancelar as próximas execuções de teste.
   * O executor deve responder a este método e marcar os testes e suítes como ignorados em
   * "onBeforeRunSuite" e "onBeforeRunTest" quando for chamado.
   */
  onCancel?(reason: CancelReason): unknown;

  /**
   * Chamado antes de executar um único teste. Ainda não possui "result".
   */
  onBeforeRunTest?(test: Test): unknown;
  /**
   * Chamado antes de realmente executar a função de teste. Já possui "result" com "state" e "startTime".
   */
  onBeforeTryTest?(test: Test, retryCount: number): unknown;
  /**
   * Chamado após o resultado e o estado serem definidos.
   */
  onAfterRunTest?(test: Test): unknown;
  /**
   * Chamado logo após executar a função de teste. Ainda não tem novo estado. Não será chamado se a função de teste gerar uma exceção.
   */
  onAfterTryTest?(test: Test, retryCount: number): unknown;

  /**
   * Chamado antes de executar uma única suíte. Ainda não possui "result".
   */
  onBeforeRunSuite?(suite: Suite): unknown;
  /**
   * Chamado após executar uma única suíte. Tem estado e resultado.
   */
  onAfterRunSuite?(suite: Suite): unknown;

  /**
   * Se definido, será chamado em vez da partição e tratamento usual da suíte do Vitest.
   * Os hooks "before" e "after" não serão ignorados.
   */
  runSuite?(suite: Suite): Promise<void>;
  /**
   * Se definido, será chamado em vez do tratamento usual do Vitest para testes. Útil se você tiver sua função de teste personalizada.
   * Os hooks "before" e "after" não serão ignorados.
   */
  runTest?(test: Test): Promise<void>;

  /**
   * Chamado quando uma tarefa é atualizada. O mesmo que "onTaskUpdate" em um notificador, mas isso está sendo executado na mesma thread que os testes.
   */
  onTaskUpdate?(task: [string, TaskResult | undefined][]): Promise<void>;

  /**
   * Chamado antes de executar todos os testes nos caminhos coletados.
   */
  onBeforeRun?(files: File[]): unknown;
  /**
   * Chamado logo após executar todos os testes nos caminhos coletados.
   */
  onAfterRun?(files: File[]): unknown;
  /**
   * Chamado quando um novo contexto para um teste é definido. Útil se você deseja apenas adicionar propriedades personalizadas ao contexto.
   * Se você deseja apenas definir um contexto personalizado com um executor, considere usar "beforeAll" em "setupFiles" em vez disso.
   */
  extendTestContext?(context: TestContext): TestContext;
  /**
   * Chamado quando certos arquivos são importados. Pode ser chamado em duas situações: ao coletar testes e ao importar arquivos de setup.
   */
  importFile(filepath: string, source: VitestRunnerImportSource): unknown;
  /**
   * Configuração disponível publicamente.
   */
  config: VitestRunnerConfig;
}

Ao instanciar esta classe, o Vitest passa a configuração do Vitest. Você deve expô-la como uma propriedade config.

WARNING

O Vitest também injeta uma instância de ViteNodeRunner como a propriedade __vitest_executor. Você pode usá-la para processar arquivos no método importFile (este é o comportamento padrão de TestRunner e BenchmarkRunner).

ViteNodeRunner expõe o método executeId, que é usado para importar arquivos de teste em um ambiente amigável ao Vite. Isso significa que ele resolverá as importações e transformará o conteúdo do arquivo em tempo de execução para que o Node possa executá-lo.

TIP

O suporte a Snapshots e alguns outros recursos dependem do executor. Caso não queira perdê-los, você pode estender seu executor de VitestTestRunner importado de vitest/runners. Ele também expõe BenchmarkNodeRunner se você quiser estender a funcionalidade de benchmark.

Sua Função de Tarefa ​

Você pode expandir o sistema de tarefas do Vitest com suas próprias tarefas. Uma tarefa é um objeto que faz parte de uma suíte. Ela é adicionada automaticamente à suíte atual através do método suite.custom:

js
// ./utils/custom.js
import { getCurrentSuite, setFn } from 'vitest/suite';

export { describe, beforeAll, afterAll } from 'vitest';

// esta função será chamada quando o Vitest coletar tarefas
export const myCustomTask = function (name, fn) {
  const task = getCurrentSuite().custom(name);
  task.meta = {
    customPropertyToDifferentiateTask: true,
  };
  setFn(task, fn || (() => {}));
};
js
// ./garden/tasks.test.js
import {
  afterAll,
  beforeAll,
  describe,
  myCustomTask,
} from '../utils/custom.js';
import { gardener } from './gardener.js';

describe('take care of the garden', () => {
  beforeAll(() => {
    gardener.putWorkingClothes();
  });

  myCustomTask('weed the grass', () => {
    gardener.weedTheGrass();
  });
  myCustomTask('water flowers', () => {
    gardener.waterFlowers();
  });

  afterAll(() => {
    gardener.goHome();
  });
});
bash
vitest ./garden/tasks.test.js

WARNING

Caso não tenha um executor personalizado ou não tenha definido o método runTest, o Vitest tentará recuperar uma tarefa automaticamente. Se você não adicionou uma função com setFn, ele falhará.

TIP

O sistema de tarefas personalizadas suporta hooks e contextos. Para suportar o encadeamento de propriedades (como only, skip e as suas personalizadas), importe createChainable de vitest/suite e envolva sua função com ele. Nesse caso, você precisará chamar custom como custom.call(this).

Pager
AnteriorAPI do Node
PróximoMetadados da Tarefa

Distribuído sob a Licença MIT.

Copyright (c) 2024 Mithril Contributors

https://v0.vitest.dev/advanced/runner

Distribuído sob a Licença MIT.

Copyright (c) 2024 Mithril Contributors