es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo burlar un método que forma parte de un módulo de nodo usando jest?

Necesito simular una función cuando se hace clic en un botón. La función está en un archivo diferente. Esta función utiliza un método de node_modules.

import { recordCounter } from '../instrumentation/instrumentation;'
<button onclick="{()" ==""> {
    recordCounter(`createTicketClicked`);
  }}
  text="Crear Ticket"
/>

En instrumentation.ts

import { newFederatedInstrumentation } from 'metrics';

const instance = newFederatedInstrumentation('myMetrics');
export const recordCounter = instance.recordCounter;

En la prueba necesito simular el método recordCounter para ver si se ha invocado y con qué valor.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para burlarse de la función recordCounter de instrumentation.ts cuando se hace clic en el botón “Create Ticket”, puedes usar las funciones de burla de Jest.

    Primero, debes importar recordCounter en la parte superior de tu archivo de prueba:

    import { recordCounter } from '../instrumentation/instrumentation';
    

    Luego, puedes crear una implementación simulada (mock) para recordCounter utilizando el método jest.fn() de Jest.

    const mockRecordCounter = jest.fn();
    

    A continuación, deberás simular toda la visualización del módulo instrumentation.ts en tu archivo de prueba.

    jest.mock('../instrumentation/instrumentation', () => ({
      recordCounter: mockRecordCounter
    }));
    

    Finalmente, en tu prueba, puedes simular un clic en el botón “Create Ticket” y verificar que recordCounter haya sido llamado con el valor esperado.

    it('registra un contador cuando se hace clic en el botón Create Ticket', () => {
      const wrapper = mount(<mycomponent></mycomponent>);
      wrapper.find('Button[text="Create Ticket"]').simulate('click');
      expect(recordCounter).toHaveBeenCalledWith('createTicketClicked');
    });
    

    En este ejemplo, MyComponent es el componente que contiene el componente Button con el controlador onClick que llama a recordCounter. La función mount es de la biblioteca Enzyme y se utiliza para montar el componente en un DOM completo, lo que te permite simular interacciones de usuario.

    Cuando se hace clic en el botón “Create Ticket”, el controlador onClick debería llamar a mockRecordCounter (que es la implementación simulada de recordCounter). Puedes usar el comparador toHaveBeenCalledWith() de Jest para verificar que mockRecordCounter haya sido llamado con el valor esperado ('createTicketClicked').

    En resumen, esta prueba debe asegurar que cuando se haga clic en el botón “Create Ticket”, se invoque a recordCounter con el valor correcto.

Comments are closed.