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

Guia

Por que Vitest

Primeiros Passos

Recursos

Workspace

Interface de Linha de Comando

Filtrando Testes

Cobertura

Snapshot

Mocking

Testando Tipos de Dados

Vitest UI

Modo Navegador (experimental)

Testes no Código Fonte

Contexto de Teste

Ambiente de Teste

Expandindo Matchers

Integrações de IDE

Depuração

Comparações com Outros Executores de Teste

Guia de Migração

Erros Comuns

API

Referência da API de Teste

Funções Mock

Vi

expect

expectTypeOf

assertType

Configuração

Configurando o Vitest

Nesta página

Guia de Migração ​

Migrando do Jest ​

O Vitest foi projetado com uma API compatível com o Jest, a fim de tornar a migração o mais simples possível. Apesar desses esforços, você ainda pode encontrar as seguintes diferenças:

Globais por Padrão ​

O Jest tem sua API global habilitada por padrão. O Vitest não. Você pode habilitar os globais através da configuração globals ou atualizar seu código para usar importações do módulo vitest.

Se você decidir manter os globais desabilitados, esteja ciente de que bibliotecas comuns como testing-library não executarão a limpeza automática do DOM.

Simulações de Módulo ​

Ao simular um módulo no Jest, o valor de retorno do argumento da fábrica é a exportação padrão do módulo. No Vitest, o argumento da fábrica deve retornar um objeto com cada exportação explicitamente definida. Por exemplo, o seguinte jest.mock precisaria ser atualizado da seguinte forma:

diff
- jest.mock('./some-path', () => 'hello')
+ vi.mock('./some-path', () => ({
+   default: 'hello',
+ })

Para mais detalhes, consulte a seção da API vi.mock.

Comportamento de Simulação Automática ​

Ao contrário do Jest, os módulos simulados em <root>/__mocks__ não são carregados a menos que vi.mock() seja chamado. Se você precisar que eles sejam simulados em todos os testes, assim como no Jest, você pode simulá-los dentro de setupFiles.

Importando o original de um pacote simulado ​

Se você estiver simulando apenas parcialmente um pacote, você pode ter usado a função requireActual do Jest anteriormente. No Vitest, você deve substituir essas chamadas por vi.importActual.

diff
- const { cloneDeep } = jest.requireActual('lodash/cloneDeep')
+ const { cloneDeep } = await vi.importActual('lodash/cloneDeep')

Variáveis de Ambiente ​

Assim como o Jest, o Vitest define NODE_ENV para test, caso não tenha sido definido antes. O Vitest também tem uma contrapartida para JEST_WORKER_ID chamada VITEST_POOL_ID (sempre menor ou igual a maxThreads). Se você depende dela, não se esqueça de renomeá-la. O Vitest também expõe VITEST_WORKER_ID, que é um ID único de um worker em execução - este número não é afetado por maxThreads e aumentará com cada worker criado.

Se você quiser modificar as variáveis de ambiente, e usava a API replaceProperty no Jest, você pode usar vi.stubEnv para fazer o mesmo no Vitest.

Callback de Conclusão ​

A partir do Vitest v0.10.0, o estilo de callback para declarar testes está obsoleto. Você pode reescrevê-los para usar funções async/await, ou usar Promises para imitar o estilo de callback.

diff
- it('should work', (done) => {
+ it('should work', () => new Promise(done => {
    // ...
    done()
- })
+ }))

Hooks ​

Os hooks beforeAll/beforeEach podem retornar uma função de teardown no Vitest. Por causa disso, você pode precisar reescrever suas declarações de hooks, se retornarem algo diferente de undefined ou null:

diff
- beforeEach(() => setActivePinia(createTestingPinia()))
+ beforeEach(() => { setActivePinia(createTestingPinia()) })

Tipos ​

O Vitest não expõe muitos tipos no namespace Vi. Ele existe principalmente para garantir compatibilidade com matchers, então você pode precisar importar tipos diretamente de vitest em vez de depender do namespace Vi:

diff
- let fn: jest.Mock<string, [string]>
+ import type { Mock } from 'vitest'
+ let fn: Mock<[string], string>

Além disso, o Vitest tem o tipo Args como primeiro argumento em vez de Returns, como você pode ver na diferença.

Temporizadores ​

O Vitest não oferece suporte aos temporizadores legados do Jest.

Snapshots do Vue ​

Este não é um recurso exclusivo do Jest, mas se você estava usando o Jest com o preset vue-cli, você precisará instalar o pacote jest-serializer-vue e usá-lo dentro de setupFiles:

vite.config.js

js
import { defineConfig } from 'vite';

export default defineConfig({
  test: {
    setupFiles: ['./tests/unit/setup.js'],
  },
});

tests/unit/setup.js

js
import vueSnapshotSerializer from 'jest-serializer-vue';

expect.addSnapshotSerializer(vueSnapshotSerializer);

Caso contrário, seus snapshots terão muitos caracteres " escapados.

Pager
AnteriorComparações com Outros Executores de Teste
PróximoErros Comuns

Distribuído sob a Licença MIT.

Copyright (c) 2024 Mithril Contributors

https://v0.vitest.dev/guide/migration

Distribuído sob a Licença MIT.

Copyright (c) 2024 Mithril Contributors