Saltar al contenido

Prueba un archivo index.js create-react-app

Solución:

Si su objetivo es una cobertura del 100% en su proyecto y el código en su index.js archivo es trivial, entonces podría ser una buena opción excluir el archivo del informe de cobertura, como señala Andreas Köberle en su respuesta.

Create-react-app actualmente solo admite estas cuatro claves en la configuración de Jest (fuente):

collectCoverageFrom
coverageReporters
coverageThreshold
snapshotSerializers

Esta es la razón por

coveragePathIgnorePatterns": ["src/index.js"]

no funcionará.

Agregue el siguiente código al alcance más externo de su package.json expediente:

"jest": {
  "collectCoverageFrom": [
    "src/**/*.{js,jsx}",
    "!src/index.js"
  ]
}

En la imagen a continuación, puede ver el resultado de una ejecución de prueba con este código agregado al package.json de la aplicación inicial creada con create-react-app v1.4.3. Tenga en cuenta que el index.js El archivo ya no aparece en el informe y tampoco afecta el porcentaje de cobertura.

Informe de cobertura

Así es como probé index.js

index.js

import React from "react";
import ReactDOM from "react-dom";
import App from "./App";

ReactDOM.render(<App />, document.getElementById("root"));

index.test.js

import React from "react";
import ReactDOM from "react-dom";
import App from "./App";

jest.mock("react-dom", () => ({ render: jest.fn() }));

describe("Application root", () => {
  it("should render without crashing", () => {
    const div = document.createElement("div");
    div.id = "root";
    document.body.appendChild(div);
    require("./index.js");
    expect(ReactDOM.render).toHaveBeenCalledWith(<App />, div);
  });
});

La pregunta principal es qué quieres probar allí. Si quieres probar eso tu el código funciona correctamente, escribe una prueba unitaria que espíe ReactDOM.render y se burla document.getElementById('root'). Porque esto es todo lo que hace tu código, llamando ReactDOM.render con nuestro componente de aplicación y un div.

import ReactDOM from 'react-dom';
...
jest.mock('react-dom', ()=> ({render: jest.fn()}))


it('renders without crashing', () => {

  const div = document.createElement('div');
  ReactDOM.render(<App/>, div);
  global.document.getElementById = (id) => id ==='root' && div
  expect(ReactDOM.render).toHaveBeenCalledWith(...)
});

Si desea probar que la aplicación realmente se inicia en su página, debe escribir una prueba de integración con Selenium o Nightwatch.js

Para obtener una cobertura del 100%, también puede ignorar este archivo agregándolo al coveragePathIgnorePatterns en tu configuración de broma

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *