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 escribir casos de prueba unitarios para componentDidMount() y export default connect(null, updateProps)() con JEST/Enzyme en React?

He creado un componente simple de React y he escrito casos de prueba de los componentes que funcionan correctamente. He obtenido un informe de cobertura para los casos de prueba.

Ahora, he añadido react redux a otro componente. Este componente contiene los métodos componentDidMount() y export default connect(null, updateProps)(ComponentName). Necesito escribir casos de prueba unitarios para estos métodos.

Por favor, consulta el siguiente ejemplo de código:

class MyComponent extends Component {
  componentDidMount = () => {
    // algún código aquí
  )

  handleSignIn = (e) => {
    // algún código aquí
  }

  render() {
    return (
      <div>
        <form onsubmit="{this.handleSignIn}">
          <input type="text" name="inputText" placeholder="Texto" autofocus="" required="">
        </form>
      </div>
    );
  }
}

const updateProps = (dispatch) => {
  return {
    // algún código aquí
  };
};

export default connect(null, updateProps)(MyComponent);

Espero que esta información te sea útil.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para escribir casos de prueba unitarios para los métodos componentDidMount() y export default connect(null, updateProps)(ComponentName) en el componente react-redux, puedes utilizar Jest y Enzyme. Aquí tienes un ejemplo de cómo puedes escribir casos de prueba para el componente:

    import React from 'react';
    import { shallow } from 'enzyme';
    import configureMockStore from 'redux-mock-store';
    import thunk from 'redux-thunk';
    import { Provider } from 'react-redux';
    import MyComponent from './MyComponent';
    
    const mockStore = configureMockStore([thunk]);
    
    describe('MyComponent', () => {
      let store;
      let wrapper;
    
      beforeEach(() => {
        store = mockStore({
          // aquí va tu estado inicial
        });
    
        wrapper = shallow(
          <provider store="{store}">
            <mycomponent></mycomponent>
          </provider>,
        );
      });
    
      it('should call componentDidMount', () => {
        const componentDidMountSpy = jest.spyOn(
          MyComponent.prototype,
          'componentDidMount',
        );
        wrapper.update();
        expect(componentDidMountSpy).toHaveBeenCalled();
      });
    
      it('should call handleSignIn when form submitted', () => {
        const handleSignInSpy = jest.spyOn(wrapper.instance(), 'handleSignIn');
        wrapper.find('form').simulate('submit', { preventDefault() {} });
        expect(handleSignInSpy).toHaveBeenCalled();
      });
    
      it('should match snapshot', () => {
        expect(wrapper).toMatchSnapshot();
      });
    });
    

    En este ejemplo, primero creamos un almacén ficticio utilizando configureMockStore de redux-mock-store y lo pasamos a Provider para que el componente pueda acceder al almacén. También utilizamos shallow de Enzyme para renderizar el componente.

    El primer caso de prueba es para verificar si se llama al método componentDidMount. Podemos espiar el método componentDidMount y asegurar que se haya llamado utilizando el matcher toHaveBeenCalled() de Jest.

    El segundo caso de prueba es para verificar si se llama al método handleSignIn cuando se envía el formulario. También podemos utilizar un spy para este método y simular el envío del formulario utilizando el método simulate() de Enzyme.

    El tercer caso de prueba es para verificar si el componente coincide con la instantánea. Podemos utilizar el matcher toMatchSnapshot() de Jest para esto.

    Ten en cuenta que es posible que necesites ajustar los casos de prueba según tu implementación específica, pero este ejemplo de código debería darte una idea general de cómo probar componentes react-redux con Jest y Enzyme.

Comments are closed.