Los componentes de prueba en React es una parte crucial del proceso de desarrollo, asegurando que su aplicación funcione como se esperaba y permanece estable a medida que evoluciona. React.strictMode es una herramienta valiosa que lo ayuda a identificar posibles problemas en sus componentes durante el desarrollo. En esta publicación de blog, como proveedor de enzimas, lo guiaré a través del proceso de prueba de componentes con React.strictMode usando enzima.
Comprensión react.strictmode
React.strictMode es un componente de envoltura proporcionado por React que activa controles y advertencias adicionales para sus descendientes. No hace ninguna interfaz de usuario visible; En cambio, le ayuda a encontrar errores comunes y problemas potenciales en sus componentes. Cuando envuelve una parte de su aplicación con React.strictMode, React realizará controles adicionales, como detectar métodos de ciclo de vida heredado, advertir sobre el uso inadecuado delel USSTATEyUspereducerganchos e identificación de efectos secundarios inesperados.
importar reaccionar de 'reaccionar'; const app = () => {return (<react.strictmode> {/ * Sus componentes van aquí */} </react.strictmode>); }; Exportar aplicación predeterminada;
¿Por qué usar la enzima para las pruebas?
La enzima es una utilidad de prueba JavaScript para React que facilita la prueba de la salida de los componentes React. Proporciona un conjunto de métodos para manipular, atravesar y consultar el DOM virtual de sus componentes React. Con la enzima, puede simular interacciones del usuario, probar estados de componentes y verificar la salida renderizada. Como proveedor de enzimas, puedo dar fe de su flexibilidad y facilidad de uso, lo que lo convierte en una opción popular entre los desarrolladores de React para las pruebas.
Configuración del entorno de prueba
Antes de comenzar a probar sus componentes con React.strictMode usando la enzima, debe configurar su entorno de prueba. Primero, deberá instalar los paquetes necesarios. Si está usando NPM, puede ejecutar los siguientes comandos:
Instalar NPM--Save-DEV Enzyme-Adapter-Adapter-React-16 React-Test-Renderer
Aquí,enzimaes la utilidad de prueba,Enzima-adaptador-react-16es el adaptador para React 16 (es posible que deba ajustar la versión de acuerdo con su versión React), yreaccionistase usa para representar componentes React a objetos JavaScript puros.
A continuación, debe configurar la enzima para usar el adaptador. Puede hacer esto en un archivo de configuración, por ejemplo,setuptests.js:
Enzima de importación de 'Enzima'; adaptador de importación de 'Enzyme-Adapter-react-16'; Enzyme.configure ({adaptador: nuevo adapter ()});
Pruebas de escritura con React.strictMode y enzima
Supongamos que tiene un componente React simple llamadoBotónEso hace que un botón con algún texto.
importar reaccionar de 'reaccionar'; const button = ({text}) => {return <boton> {text} </button>; }; Exportar el botón predeterminado;
Ahora, escribamos una prueba para este componente usando enzima y react.strictMode.
importar reaccionar de 'reaccionar'; import {shhoow} de 'enzima'; Botón de importación de './Button'; describir ('button component', () => {it ('debería renderizar el texto correcto', () => {const text = 'haga clic en mí'; const wrapper = showound (<react.strictmode> <button text = {text} /> < /react.strictmode>); const button = wrapper.find ('button'); esperanza (button.text ().
En esta prueba, usamos elpoco profundoMétodo de representación de la enzima para renderizar elBotóncomponente envuelto enReact.strictmode. Entonces, encontramos elbotónelemento usando elencontrarmétodo y verifique que el texto dentro del botón coincida con eltextoApoyo que pasamos.
Probar cambios de estado del componente
La enzima también le permite probar los cambios en el estado de los componentes. Digamos que tiene un componente llamadoEncimeraque tiene una variable de estadocontary un botón para incrementar el recuento.
importar react, {useState} de 'react'; const contador = () => {const [count, setCount] = useState (0); const increment = () => {setCount (count + 1); }; return (<iv> <p> Count: {Count} </p> <button onClick = {increment}> increment </boton> </div>); }; Exportar contador predeterminado;
Así es como puede probar el cambio de estado en este componente:
importar reaccionar de 'reaccionar'; import {monte} de 'enzima'; importación contador de './counter'; Describa ('contador componente', () => {it ('debería incrementar el recuento cuando se haga clic en el botón', () => {const wrapper = Mount (<react.strictmode> <contar /> < /rehict.strictmode>); const button = wrapper.find ('botón'); const = parseint (wrapper.find ('p'). 10)
En esta prueba, usamos elmontarmétodo de la enzima para renderizar elEncimeracomponente envuelto enReact.strictmode. Luego encontramos el botón, obtenemos el valor de conteo inicial, simulamos un clic en el botón y verificamos que el recuento se haya incrementado.
Prueba de métodos de ciclo de vida de componentes
React.strictMode puede ayudarlo a detectar métodos de ciclo de vida heredado en sus componentes. Digamos que tiene un componente con un legadocomponentwillReceivePropsmétodo.
importar react, {componente} de 'react'; La clase LegacyComponent extiende Component {ComponentWillReceiveProps (NextProps) {// Alguna lógica aquí} render () {return <iv> {this.props.text} </div>; }} Exportar LegacyComponent predeterminado;
Cuando pruebe este componente con React.strictMode, React emitirá una advertencia sobre el uso del método de ciclo de vida heredado.
importar reaccionar de 'reaccionar'; import {shhoow} de 'enzima'; importar LegacyComponent de './legacyComponent'; Describa ('LegacyComponent', () => {it ('debería renderizar correctamente', () => {const text = 'hello'; const wrapper = showow (<react.strictmode> <leguacyComonent text = {text} /> < /react.strictmode>); expection (wrapper.find ('div'). Text (). To (toBe (text);});});});});
Esta advertencia lo ayuda a identificar y actualizar sus componentes para usar los nuevos métodos o ganchos del ciclo de vida.

Ganchos de prueba
Si su componente usa ganchos, React.strictMode también puede ayudarlo a detectar problemas potenciales. Por ejemplo, supongamos que tiene un gancho personalizado que obtiene datos de una API.
importar reaccionar, {useSestate, useEffect} de 'React'; const usefetch = (url) => {const [data, setData] = useState (null); const [carga, setloading] = useState (true); useEffect (() => {const fetchData = async () => {try {const respuesta = Agait fetch (url); const json = a ahogar respuesta.json (); setData (json);} catch (error) {console.error (error);} finalmente {carga (falso);}}; fetchData ();}, [url], [url]; devolver {datos, carga}; }; const datafetcher = ({url}) => {const {data, carging} = useFetch (url); if (cargar) {return <p> Carging ... </p>; } return <pre> {json.stringify (datos, nulo, 2)} </ pre>; }; Exportar DataSfetcher predeterminado;
Así es como puede probar este componente:
importar reaccionar de 'reaccionar'; import {monte} de 'enzima'; importar DataSfetcher de './datafetcher'; Describa ('DataFetcher Component', () => {it ('debería renderizar la carga de texto inicialmente', () => {const url = 'https://example.com/api/data'; const wrapper = Mount (<react.strictmode> <datafetcher url = {url}/> </react.strictmode>); Esperar (WRAPPER.FIND ('P'). Text ()). Tobe ('Carga ...');
React.strictMode asegurará que elUsar efectogancho en elUsefetchEl gancho personalizado se llama correctamente y que no hay efectos secundarios inesperados.
Conclusión
Prueba de componentes con React.strictMode utilizando enzima es una forma efectiva de garantizar la calidad y estabilidad de sus aplicaciones React. React.strictMode lo ayuda a identificar posibles problemas al principio del proceso de desarrollo, mientras que la enzima proporciona un poderoso conjunto de herramientas para probar sus componentes. Como proveedor de enzimas, le animo a que incorpore estas prácticas de prueba en su flujo de trabajo de desarrollo.
Si está interesado en productos enzimáticos de alta calidad u otros suministros relacionados, también ofrecemos una gama de productos comoAsclepius suministra polvo de psicosa de alta calidad /polvo de psicosa,Fosfatidilserina natural al 70%, fosfatidilserina en polvo, yTriglicéridos de cadena media. Si tiene alguna pregunta o desea discutir una compra potencial, no dude en contactarnos para obtener más detalles y comenzar una negociación de adquisiciones.
Referencias
- React Documentation: https://reactjs.org/docs/strict-mode.html
- Documentación enzimática: https://enzymejs.github.io/enzyme/