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

377
Vistas
¿Por qué java script fs.readFileSync no se burla?

Tengo una función fs.readFileSync que necesito para simular usando broma. He probado el siguiente código.

mi archivo original que quiero probar.

 const fs = require('fs'); const read_file = (path) => { try { const data = fs.readFileSync(path, 'utf8'); return data; } catch (err) { console.error('Error in read_file', err); throw err; } }; const getSecret = secretName => { try { return read_file(`/etc/secrets/${secretName}.txt`); } catch (err){ throw err; } }; const secretConfig = { kafka_keystore_password: getSecret('kafka_keystore_password') }; module.exports = secretConfig;

aquí está mi caso de prueba

 const secret = require('./secret'); let fs = require('fs') jest.mock('fs'); describe('secret read files', () => { afterEach(jest.restoreAllMocks); it('should read secret from file', () => { //fs.readFileSync.mockReturnValue("randomPrivateKey"); fs.readFileSync.mockResolvedValue("randomPrivateKey") const secretMessage = secret.kafka_keystore_password; //expect(fs.readFileSync).toHaveBeenCalled(); expect(secretMessage).toEqual('randomPrivateKey'); }) }) describe('getSecretsFromFile', () => { const secret = 'secret'; const secrets = { mySecret: secret }; afterEach(jest.restoreAllMocks); it('returns secrets if file is present', () => { fs.existsSync.mockReturnValue(true); fs.readFileSync.mockReturnValue('randomPrivateKey'); const secretMessage = secret.kafka_keystore_password; expect(secretMessage).toEqual('randomPrivateKey'); }); });

y me sale el siguiente error.

FAIL src/config/secret.test.js ● archivos de lectura secreta › debe leer el secreto del archivo

 expect(received).toEqual(expected) // deep equality Expected: "randomPrivateKey" Received: undefined 15 | const secretMessage = secret.kafka_keystore_password; 16 | //expect(fs.readFileSync).toHaveBeenCalled(); > 17 | expect(secretMessage).toEqual('randomPrivateKey'); | ^ 18 | 19 | }) 20 | at Object.<anonymous> (src/config/secret.test.js:17:27)

● getSecretsFromFile › devuelve secretos si el archivo está presente

 expect(received).toEqual(expected) // deep equality Expected: "randomPrivateKey" Received: undefined 32 | 33 | const secretMessage = secret.kafka_keystore_password; > 34 | expect(secretMessage).toEqual('randomPrivateKey'); | ^ 35 | }); 36 | }); 37 | at Object.<anonymous> (src/config/secret.test.js:34:29)

ayúdame a arreglar esto.

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

0

probar:

 const fs = { readFileSync: jest.fn(() => ({ message: 'Test'})) }

para simular el mensaje fs readFileSync.

Pero no veo cómo va a pasar esta prueba porque está devolviendo el valor "Prueba"

pero buscando randomPrivateKey

 expect(secretMessage).toEqual('randomPrivateKey');

Sin ver lo que sucede dentro del código, es difícil decirlo, pero supongo que querrá cambiar esa línea a:

 expect(secretMessage).toEqual('test');

Como la test es el valor, su simulación alternativamente devuelve randomPrivateKey de la simulación.

Tengo que hacer un montón de suposiciones aquí porque no sé cómo se calcula secret.kafka_keystore_password . Supongo que solo devuelve lo que devuelve fs.readFileSync

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