0Pricing
TypeScript Academy · Lección

Simulación de módulos y funciones en TypeScript

Utilice jest.mock con estrategias correctas de conversión de tipos.

Simulación de módulos y funciones en TypeScript es una lección gratuita de TypeScript Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de TypeScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de TypeScript Academy incluye 4 lecciones en total.

Bienvenida

El mocking de módulos de Jest con TypeScript requiere estrategias correctas de conversión de tipos para evitar mocks tipados como any.

jest.fn() con tipos

Tipifique una función mock de Jest con su firma.
const mockFn = jest.fn<number, [string]>();
mockFn('hello'); // typed call

jest.mock() y TypeScript

jest.mock no tiene tipos de forma predeterminada. Conviértalo a jest.MockedFunction para acceder a él con tipos.
jest.mock('./api');
import { fetchUser } from './api';
const mockFetch = fetchUser as jest.MockedFunction<typeof fetchUser>;

Ayudante jest.mocked()

Jest 27+ proporciona jest.mocked() para tipar limpiamente los módulos mockeados.
jest.mock('./api');
import { fetchUser } from './api';
const mockFetch = jest.mocked(fetchUser);
mockFetch.mockResolvedValue({ id: 1, name: 'Alice' });

Mocking de valores devueltos

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

Espiar métodos

Use jest.spyOn para espiar métodos con tipos.
const spy = jest.spyOn(userService, 'findUser');
spy.mockResolvedValue(mockUser);

Mocking de módulos completos

Mockee un módulo completo mediante funciones de fábrica manuales.
jest.mock('./db', () => ({
  findUser: jest.fn(),
  createUser: jest.fn(),
}));

Mocking automático

jest.createMockFromModule crea un mock a partir de un módulo existente.
const mockDb = jest.createMockFromModule<typeof import('./db')>('./db');

Mocks parciales

Mockee solo algunos métodos de un módulo.
jest.mock('./email', () => ({ ...jest.requireActual('./email'), sendEmail: jest.fn() }));

Restablecer mocks

Restablezca los mocks entre pruebas para evitar la filtración de estado.
afterEach(() => { jest.clearAllMocks(); });
// Or globally: jest.config clearMocks: true

Objetos mock con seguridad de tipos

Cree objetos mock tipados para las pruebas de inyección de dependencias.
const mockRepo: jest.Mocked<UserRepository> = {
  findById: jest.fn(),
  save: jest.fn(),
  delete: jest.fn(),
};

Comprobación rápida

¿Qué hace `jest.mocked(fn)` en TypeScript?

Resumen

Mocking de módulos y funciones en TypeScript: ha dominado los conceptos y patrones clave.

Preguntas frecuentes

¿La lección «Simulación de módulos y funciones en TypeScript» es gratis?

Sí — el texto completo de «Simulación de módulos y funciones en TypeScript» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de TypeScript Academy, actualiza a CoddyKit PRO. El curso de TypeScript Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Simulación de módulos y funciones en TypeScript»?

Utilice jest.mock con estrategias correctas de conversión de tipos. Practicas TypeScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar TypeScript Academy?

No se requiere experiencia previa. TypeScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Simulación de módulos y funciones en TypeScript»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de TypeScript Academy?

Sí. Cada lección de TypeScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Configuración de Jest para TypeScript con ts-jest
  2. Escritura de pruebas unitarias seguras respecto a los tipos
  3. Simulación de módulos y funciones en TypeScript
  4. Pruebas de tipos con expectTypeOf y tsd
← Volver a TypeScript Academy