Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.1K
Vistas
¿Cómo simular correctamente fs.readFileSync() en Jest?

Estoy usando el módulo fs para importar una cadena html a mi módulo, así:

 const fs = require('fs'); const htmlString = fs.readFileSync("../utils/htmlString.html").toString();

Luego, en mi archivo de prueba, intento simular el módulo fs de esta manera:

 const fs = require('fs'); jest.mock("fs", () => { return { readFileSync: jest.fn() } }) fs.readFileSync.mockReturnValue("test string");

Mi lógica posiblemente incorrecta me dice que debería simular correctamente la importación de la cadena original y reemplazarla con una cadena de "cadena de prueba". Sin embargo, mientras se ejecuta la prueba arroja:

TypeError: no se puede leer la propiedad 'toString' de undefined

Entiendo que esto significa que el simulacro no tuvo éxito, ya que debería llamar correctamente a .toString() en una instancia de cadena.

¿Qué estoy haciendo mal aquí?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No necesita proporcionar el argumento de fábrica del módulo explícitamente para jest.mock('fs') . jest.mock() se burla de un módulo con una versión auto-simulada cuando se requiere. Esto significa que fs.readFileSync es un método simulado con lo mismo jest.fn() .

Debe asegurarse de solicitar el módulo bajo prueba después de burlarse del valor de retorno, ya que el código en el alcance del módulo se ejecutará instantáneamente cuando sea necesario.

P.ej

index.js :

 const fs = require('fs'); const htmlString = fs.readFileSync('../utils/htmlString.html').toString(); console.log('htmlString: ', htmlString);

index.test.js :

 const fs = require('fs'); jest.mock('fs'); describe('70760704', () => { test('should pass', () => { expect(jest.isMockFunction(fs.readFileSync)).toBeTruthy(); fs.readFileSync.mockReturnValue('test string'); require('./'); }); });

Resultado de la prueba:

 PASS stackoverflow/70760704/index.test.js (7.242 s) 70760704 ✓ should pass (14 ms) console.log htmlString: test string at Object.<anonymous> (stackoverflow/70760704/index.js:3:9) Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: 7.279 s, estimated 8 s

jest.config.js :

 module.exports = { testEnvironment: 'node', };

versiones del paquete:

 "jest": "^26.6.3"
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda