DEV Community

Cristian Fernando
Cristian Fernando

Posted on • Updated on

 

Workspace recomendado para Testing en React 17 | Jest + Enzyme 🧪

En este breve post ire directo al grano y describiré como configurar un proyecto de React 17 para realizar unit testing usando Jest. Ojo, es solo una recomendación, nada mas que eso.

Configuración básica

  • Creamos un proyecto con create-react-app
  • Instalamos Enzyme una libreria que se ejecuta sobre Jest y que permite escribir pruebas mas simples. Se recomienda instalar la versión de Enzyme acorde a la versión de React del proyecto, ya que React va por la versión 17 entonces instalaremos Enzyme 17 Puedes ejecutar el siguiente comando el el root del proyecto:
npm install --save-dev @wojtekmaj/enzyme-adapter-react-17
Enter fullscreen mode Exit fullscreen mode
  • Ya que Jest esta orientado a hacer pruebas usando snapshots una dependencia para poder ver dichos spanshots como strings en el proyecto es enzyme-to-json Puedes instalarlo asi:
npm install --save-dev enzyme-to-json
Enter fullscreen mode Exit fullscreen mode
  • En el archivo setupTest.js pegamos la siguiente config:
import {createSerializer} from 'enzyme-to-json';

import Enzyme from 'enzyme';
import Adapter from '@wojtekmaj/enzyme-adapter-react-17';

Enzyme.configure({ adapter: new Adapter() });
expect.addSnapshotSerializer(createSerializer({mode:'deep'}))

Enter fullscreen mode Exit fullscreen mode

Para probar todo el entorno montado:
Creo un componente sencillo, por ejemplo Header.js

import Header from './components/Header';

function App() {
  return (
    <div className="App">
      <Header titulo={'Buenos dias'} />
    </div>
  );
}

export default App;

Enter fullscreen mode Exit fullscreen mode

Y ahora una prueba básica:

import React from 'react';
import {shallow} from 'enzyme';
import '@testing-library/jest-dom'
import Header from '../components/Header';

describe('Pruebas en <Header />', () => {
    test('<Header /> se renderiza bien', () => {
        const titulo = 'Buenos días';
        const jsxHeader = shallow(<Header titulo={titulo}/>);
        expect(jsxHeader).toMatchSnapshot();
    })

});
Enter fullscreen mode Exit fullscreen mode

Finalmente ejecuto las pruebas con npm run test y listo!

Pasa la prueba, lo que significa que todo el workspace esta bien.

Top comments (2)

Collapse
 
cecheverri4 profile image
Cristian Echeverria

Buen aporte!

Recomiendo también React Testing Library lo cual desde mi punto de vista es simplemente genial!

Collapse
 
duxtech profile image
Cristian Fernando

Cierto, pero cuando el proyecto crece creo que es mejor usar Enzyme, es más divertido hacer pruebas xd

Top Posts from the React Ecosystem

1. Changes In The Official React Documentation

The former React Docs Beta has been officially released as the updated React documentation at react.dev after years of hard work and refinement. Check out the brand new React Docs: What’s New in the Updated React Docs

2. CRA's Time is Over

React developer team has removed create-react-app (CRA) from official documentation rendering it no longer the default setup method for new projects. The bulky setup, slow, and outdated nature of CRA led to its removal: create-react-app is officially dead

3. How to Fetch Dev.to Articles for Your Portfolio

Integrate the articles of your Dev.to profile into your personal portfolio with either React, Vue, or Next.js by following these simple steps. It outlines how to include frontend to pull the information and correctly utilizes the Dev.to API: How to Fetch Your Dev.to Articles for Your Portfolio with React