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

304
Views
Errores de broma inesperados al burlarse de Uppy

Estoy intentando simular la clase Uppy del paquete uppy en una prueba de unidad Jest siguiendo la guía de esta pregunta respondida anteriormente . Mi código fallido está a continuación:

 import Uppy from '@uppy/core'; describe('MyComponent', () => { it('renders', () => { jest.mock('@uppy/core', () => { return { Uppy: jest.fn().mockImplementation(() => { return {}; }), }; }); new Uppy(); expect(Uppy).toHaveBeenCalledTimes(1); }); });

La prueba falla con el siguiente mensaje de error:

 Matcher error: received value must be a mock or spy function Received has type: function Received has value: [Function Uppy]

Parece que la exportación predeterminada de @uppy/core es la clase Uppy , por lo que mi expectativa es que el código proporcionado se burlará del constructor de la clase, sin embargo, este no parece ser el caso.

Versiones del paquete:

  • Uppy: 2.1.2
  • broma: 27.4.7
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Creo que el problema es que estás usando jest.mock() en el momento equivocado. En otras palabras, creo que es demasiado tarde para llamar a jest.mock() dentro de un caso de prueba porque el paquete ya se ha importado en ese momento.

No estoy seguro de cuál es la forma canónica de hacer esto, pero así es como lo hace React:

  • tiene un archivo separado donde se jest.mock()
  • la ruta de ese archivo desde arriba es el valor de la opción globalSetup de Jest; como puede ver, esta opción está en el archivo config.base.js :
 module.exports = { globalSetup: require.resolve('./setupGlobal.js'), }
  • cuando se ejecuta el script de prueba, elegirá la configuración en función de los argumentos proporcionados

  • un ejemplo de dicha configuración sería este archivo que, como puede ver, extiende config.base , que es donde se ha configurado la opción globalSetup

 /* ... */ const baseConfig = require('./config.base'); module.exports = Object.assign({}, baseConfig, { /* ... */ }); /* ... */

Entonces, diría que hacer uso de esa opción globalSetup debería resolver el problema.

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!