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

171
Vistas
Broma burlándose de un módulo con patrón de módulo y teniendo una funcionalidad única en cada prueba

Tengo problemas para tener una implementación única de búsqueda desde la configuración de patrón de este módulo que tengo (MyConnection.js); esto es similar a lo que tengo:

 // MyConnection.js const MyConnection = () => { const search = async (q) => { //...some functionality }; return { search, }; }; //JEST TESTS const MyConnection = require('../MyConnection') // this works - but it sets the search implementation // for the whole test file I believe jest.mock('../MyConnection', () => { return jest.fn(()=>{ search: ()=> ['mocked', 'fn', 'results'] }) }) //the jest tests - I want different // implementations of search in each test describe('connection tests', ()=>{ it('test one', ()=>{ //Not sure if its something like this to set 'search' for each test? This doesn't work as is MyConnection.search.mockImplementation((q)=>{`You searched ${q}`}) }) it('test two', ()=>{ MyConnection.search.mockImplementation((q)={q.length>32? 'a': 'b' }}) }) })

¿Cómo puedo obtener implementaciones simuladas de Jest únicas de esa función de búsqueda para cada prueba?

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

0

Debe asegurarse de que MyConnection siempre devuelva el mismo objeto de conexión en su archivo de prueba y el módulo que desea probar.

MyConnection.js :

 const MyConnection = () => { const search = async (q) => {}; return { search, }; }; module.exports = MyConnection;

main.js :

 const MyConnection = require('./MyConnection'); async function main(q) { const conn = MyConnection(); return conn.search(q); } module.exports = main;

main.test.js :

 const MyConnection = require('./MyConnection'); const main = require('./main'); jest.mock('./MyConnection', () => { console.log('MyConnection module gets mocked'); const conn = { search: jest.fn() }; return jest.fn(() => conn); }); const mConn = MyConnection(); describe('connection tests', () => { it('test one', async () => { mConn.search.mockImplementation((q) => { return `You searched ${q}`; }); const actual = await main('teresa teng'); expect(actual).toBe('You searched teresa teng'); }); it('test two', async () => { mConn.search.mockImplementation((q) => { return q.length > 32 ? 'a' : 'b'; }); const actual = await main('_'); expect(actual).toBe('b'); }); });

resultado de la prueba:

 PASS examples/70132655/main.test.js (10.454 s) connection tests ✓ test one (2 ms) ✓ test two (1 ms) console.log MyConnection module gets mocked at examples/70132655/main.test.js:5:11 Test Suites: 1 passed, 1 total Tests: 2 passed, 2 total Snapshots: 0 total Time: 10.903 s

No puedes burlarte así:

 jest.mock('./MyConnection', () => { console.log('MyConnection module gets mocked'); return jest.fn(() => { search: jest.fn() }); });

¿Por qué? Porque cada vez que llama a la función MyConnection() en el archivo de prueba o el archivo que desea probar. Devolverá un nuevo objeto simulado ( { search: jest.fn() } ), los objetos simulados en el archivo bajo prueba y el caso de prueba no son los mismos.

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