Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

378
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!