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

409
Vistas
Bromea con la misma función dos veces con diferentes argumentos

Soy nuevo en JEST y actualmente estoy probando un componente de Javascript que realiza una llamada a la API en su onComponentDidMount. Dependiendo de los datos de retorno de la llamada ajax (llamada api), mi componente muestra una tabla o un texto simple.

Mi prueba JEST es bastante simple, por ahora solo estoy probando para que coincida con las instantáneas actuales. Entonces, dado que mi llamada API puede devolver datos diferentes, mi instantánea puede tener dos aspectos diferentes: 1) uno con una tabla 2) uno con un texto simple.

Me burlé con éxito del servicio así.

 jest.mock("/myService", () => ({ index: (data, callback) => { const return = [ { {...} }, ] callback(return) }, }))

Mi componente realiza la llamada myService.index() correctamente, todo lo que deseo es pasarle diferentes valores que usará para realizar la devolución de llamada.

Así es como se ve

 it("has proper snapshot", () => { const props = {...} const component = shallow(<MyComponent {...props} />) expect(component).toMatchSnapshot() })

Esto funciona muy bien para el primer ejemplo, pero parece que no puedo encontrar una respuesta correcta que me convenga. Me puedes ayudar ? :)

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

1- Si desea que el simulacro arroje resultados diferentes en cada llamada:

Usar mockReturnValueOnce

 myMock .mockReturnValueOnce(10) .mockReturnValueOnce('x') .mockReturnValue(true);

devolverá 10 en la primera llamada, 'x' en la segunda llamada y true en cualquier momento después de eso.

2- Si quieres comprobar los argumentos con los que se ha llamado al simulacro:

Uso paraHaveBeenNthCalledWith

 expect(mock).toHaveBeenNthCalledWith(1, '1st call args'); expect(mock).toHaveBeenNthCalledWith(2, '2nd call arg 1', '2nd call arg 2');

afirmará que

  • el mock se llamó con '1st call args' la primera vez que se llamó -> mock('1st call args')

  • el mock se llamó con '2nd call arg 1' y '2nd call arg 2' la segunda vez que se llamó -> mock('2nd call arg 1', '2nd call arg 2')

3- Si desea una respuesta específica basada en el parámetro de función

No es compatible con jest de forma predeterminada, pero puede echar un vistazo a jest-when, que le permite hacer algo como:

 when(fn).calledWith(1).mockReturnValue('yay!')
over 4 years ago · Santiago Trujillo Denunciar

0

Consulte los documentos de Jest sobre esto. Puede devolver diferentes valores cuando se burla de una función y una vez devolver un valor que desee y luego un valor diferente.

over 4 years ago · Santiago Trujillo 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