test react create app reactjs jestjs reactjs-testutils

reactjs - react - Error: Infracción invariable: findAllInRenderedTree(...): instancia debe ser un componente compuesto



jest react native (2)

Al escribir el caso de prueba en JEST para el archivo React, recibo este error. A continuación está mi código de muestra:

search_basr_test.js

jest.autoMockOff(); global.React = require(''react/addons''); jest.setMock(''../stores/browser_store.jsx''); beforeEach(function() { var search_bar = require(''../components/search_bar.jsx''); }); var TestUtils = React.addons.TestUtils; describe("Test", function() { it("should render Test", function() { var test = TestUtils.renderIntoDocument(<search_bar/>); expect(test).toBeDefined(); }); it("renders a list in a box with proper CSS classes", function() { var test = TestUtils.renderIntoDocument(<search_bar/>); let box = TestUtils.findRenderedDOMComponentWithTag(test, "div"); expect(box.className).toEqual("sidebar__collapse"); }); });

search_bar.jsx

return ( <div> <div className=''sidebar__collapse'' onClick={this.handleClose} > <span className=''fa fa-angle-left''></span> </div> <span className=''search__clear'' onClick={this.clearFocus} > {''Cancel''} </span> }

¿Alguien por ahí para ayudarme con esto?


Un componente compuesto es un componente que contiene un componente reactivo (no div, span, ...) El método ''findRenderedDOMComponentWithTag'' toma el parámetro de un componente compuesto.

Intente analizar el componente directamente en su caso (jquery, js, ...) porque no es un compuesto


Esto es tarde, pero me encontré con esto, y no encontré una gran respuesta para eso.

Mi solución fue hacer un componente envoltorio en el archivo de prueba

import { Component } from "react"; class Wrapper extends Component { render() { return <YourComponent {...this.props} /> } }

y en lugar de llamar

TestUtils.renderIntoDocument( <YourComponent /> );

llamada

TestUtils.renderIntoDocument( <Wrapper /> );

Hacer esto asegura que su componente es un componente compuesto y no es una función sin estado.

Espero que esto ayude a cualquier otra persona en el futuro.