TypeScript Academy · Aula

Simulando módulos e funções em TypeScript

Utilize jest.mock com estratégias corretas de conversão de tipos

Aula 3 de 413 etapas

Simulando módulos e funções em TypeScript é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de TypeScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de TypeScript Academy inclui 4 aulas no total.

Boas-vindas

A simulação de módulos do Jest com TypeScript exige estratégias corretas de conversão de tipos para evitar simulações tipadas como any.

jest.fn() com tipos

Tipifique uma função simulada do Jest com a assinatura dela.
const mockFn = jest.fn<number, [string]>();
mockFn('hello'); // typed call

jest.mock() e TypeScript

jest.mock não tem tipagem por padrão. Faça uma conversão para jest.MockedFunction para obter acesso tipado.
jest.mock('./api');
import { fetchUser } from './api';
const mockFetch = fetchUser as jest.MockedFunction<typeof fetchUser>;

Auxiliar jest.mocked()

O Jest 27 ou posterior fornece jest.mocked() para tipar módulos simulados de forma limpa.
jest.mock('./api');
import { fetchUser } from './api';
const mockFetch = jest.mocked(fetchUser);
mockFetch.mockResolvedValue({ id: 1, name: 'Alice' });

Simulando valores de retorno

Tipifique corretamente mockReturnValue e mockResolvedValue.
mockFetch.mockResolvedValue({ id: 1, name: 'Alice' }); // must match User type

Espionando métodos

Use jest.spyOn para espionar métodos com tipagem.
const spy = jest.spyOn(userService, 'findUser');
spy.mockResolvedValue(mockUser);

Simulando módulos inteiros

Simule um módulo inteiro com funções de fábrica manuais.
jest.mock('./db', () => ({
  findUser: jest.fn(),
  createUser: jest.fn(),
}));

Simulação automática

jest.createMockFromModule cria uma simulação a partir de um módulo existente.
const mockDb = jest.createMockFromModule<typeof import('./db')>('./db');

Simulações parciais

Simule apenas alguns métodos de um módulo.
jest.mock('./email', () => ({ ...jest.requireActual('./email'), sendEmail: jest.fn() }));

Limpando simulações

Redefina as simulações entre os testes para evitar vazamento de estado.
afterEach(() => { jest.clearAllMocks(); });
// Or globally: jest.config clearMocks: true

Objetos simulados com segurança de tipos

Crie objetos simulados tipados para testes de injeção de dependências.
const mockRepo: jest.Mocked<UserRepository> = {
  findById: jest.fn(),
  save: jest.fn(),
  delete: jest.fn(),
};

Verificação rápida

O que `jest.mocked(fn)` faz no TypeScript?

Recapitulação

Simulando módulos e funções no TypeScript: você dominou os principais conceitos e padrões.
Grátis para começar

Aprenda TypeScript com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
101
Aulas
352

Perguntas Frequentes

A aula “Simulando módulos e funções em TypeScript” é grátis?

Sim — o texto completo de “Simulando módulos e funções em TypeScript” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de TypeScript Academy, atualize para CoddyKit PRO. O curso de TypeScript Academy inclui 4 aulas no total.

O que vou aprender em “Simulando módulos e funções em TypeScript”?

Utilize jest.mock com estratégias corretas de conversão de tipos Você pratica TypeScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar TypeScript Academy?

Nenhuma experiência prévia é necessária. TypeScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Simulando módulos e funções em TypeScript”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de TypeScript Academy?

Sim. Cada aula de TypeScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Configurando Jest para TypeScript com ts-jest
  2. Escrevendo testes unitários seguros quanto aos tipos
  3. Simulando módulos e funções em TypeScript
  4. Testando tipos com expectTypeOf e tsd
← Voltar para TypeScript Academy