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

Introdução

Por que Vitest

Primeiros Passos

Recursos

Configurando o Vitest

API

Referência da API de Teste

Funções Mock

Vi

expect

expectTypeOf

assert

assertType

Guia

Interface de Linha de Comando

Filtragem de Testes

Projetos de Teste

Reporters

Cobertura

Snapshot

Mocking

Paralelismo

Testando Tipos

Vitest UI

Testes no Código-Fonte

Contexto de Testes

Anotações em Testes

Ambiente de Teste

Estendendo Matchers

Integrações com IDEs

Depuração

Erros Comuns

Guia de Migração

Migrando para o Vitest 3.0

Migrando do Jest

Desempenho

Análise de Desempenho de Testes

Melhorando o Desempenho

Modo Navegador

APIs Avançadas

Comparações com Outros Test Runners

Nesta página

Testes no Código-Fonte ​

O Vitest oferece a capacidade de executar testes diretamente no seu código-fonte, junto com a implementação, de forma semelhante aos testes de módulo do Rust.

Essa abordagem permite que os testes compartilhem o mesmo escopo das implementações, possibilitando testar estados privados sem a necessidade de exportá-los. Além disso, proporciona um ciclo de feedback mais ágil durante o desenvolvimento.

WARNING

Este guia explica como escrever testes dentro do seu código-fonte. Se você precisa escrever testes em arquivos de teste separados, consulte o guia "Escrevendo Testes" (Writing Tests).

Configuração ​

Para começar, insira um bloco if (import.meta.vitest) no final do seu arquivo de origem e escreva seus testes dentro dele. Por exemplo:

ts
// a implementação
export function add(...args: number[]) {
  return args.reduce((a, b) => a + b, 0);
}

// conjuntos de teste no código-fonte
if (import.meta.vitest) {
  const { it, expect } = import.meta.vitest;
  it('add', () => {
    expect(add()).toBe(0);
    expect(add(1)).toBe(1);
    expect(add(1, 2, 3)).toBe(6);
  });
}

Atualize a configuração includeSource para que o Vitest inclua os arquivos em src/:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    includeSource: ['src/**/*.{js,ts}'], 
  },
});

Agora você pode começar a testar!

bash
$ npx vitest

Compilação para Produção ​

Para a compilação de produção, você precisará definir as opções define no seu arquivo de configuração, permitindo que o empacotador (bundler) realize a eliminação de código morto (dead code elimination). Por exemplo, no Vite:

ts
/// <reference types="vitest/config" />

import { defineConfig } from 'vite'

export default defineConfig({
  test: {
    includeSource: ['src/**/*.{js,ts}'],
  },
  define: { 
    'import.meta.vitest': 'undefined', 
  }, 
})

Outros Empacotadores ​

unbuild
ts
import { defineBuildConfig } from 'unbuild'

export default defineBuildConfig({
  replace: { 
    'import.meta.vitest': 'undefined', 
  }, 
  // other options
})

Saiba mais: unbuild

Rollup
ts
import replace from '@rollup/plugin-replace'

export default {
  plugins: [
    replace({ 
      'import.meta.vitest': 'undefined', 
    }) 
  ],
  // other options
}

Saiba mais: Rollup

TypeScript ​

Para obter suporte TypeScript para import.meta.vitest, adicione vitest/importMeta ao seu tsconfig.json:

json
{
  "compilerOptions": {
    "types": [
      "vitest/importMeta"
    ]
  }
}

Consulte o exemplo completo em examples/in-source-test.

Observações ​

Este recurso pode ser útil para:

  • Testes de unidade para funções ou utilitários de escopo limitado
  • Prototipagem
  • Asserções inline

É recomendado usar arquivos de teste separados para testes mais complexos, como componentes ou testes E2E.

Pager
AnteriorVitest UI
PróximoContexto de Testes

Distribuído sob a Licença MIT.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/guide/in-source

Distribuído sob a Licença MIT.

Copyright (c) 2021-Present Vitest Team