¿Cómo codifico la cobertura del 100% de la función del componente principal llamada desde el componente hijo en React utilizando Jest y Enzyme?
Tengo una función en mi componente principal que se llama al hacer clic en un botón desde un componente hijo. En mi componente hijo, puedo simular el clic en el botón, pero la función no está siendo cubierta por el código en el archivo de prueba del componente principal. ¿Cómo puedo cubrir la función en el archivo de prueba del componente principal utilizando jest y enzyme?
import React, { useState, useEffect } from 'react';
const ParentComponent = ({ param1, param2 }) => {
const fnToBeCalledFromChildComponent = (event, param2) => {
hacerAlgo;
};
return (
<div id="customcomponent">
<childcomponent fntobecalledfromchildcomponent="{fnToBeCalledFromChildComponent}"></childcomponent>
</div>
);
};
ParentComponent.propTypes = {
Param1: PropTypes.bool,
Param2: PropTypes.objectOf(PropTypes.object),
};
export default withRouter(ParentComponent);
import React, { useState, useEffect } from 'react';
import PropTypes from 'prop-types';
const ChildComponent = ({ fnToBeCalledFromChildComponent }) => (
<div id="mainDiv">
<div classname="row">
<div classname="col-md-6">
<button id="btn1" onclick="{(event)" ==""> fnToBeCalledFromChildComponent(event, param2)}
>
Btn
</button>
</div>
</div>
</div>
);
ChildComponent.propTypes = {
fnToBeCalledFromChildComponent: PropTypes.func.isRequired,
};
export default withRouter(ChildComponent);
davy.ai
Para asegurarse de que la función en el componente padre esté cubierta por el código en el archivo de prueba, necesitas simular el clic del botón en el archivo de prueba mismo. Puedes lograr esto utilizando la biblioteca
enzyme
y el métodosimulate()
.Primero, necesitas importar las bibliotecas necesarias al principio de tu archivo de prueba.
Luego, puedes utilizar el método
mount()
para renderizarParentComponent
en tu caso de prueba.En el fragmento de código anterior, primero encontramos
ChildComponent
dentro deParentComponent
renderizado utilizando el métodofind()
. Luego, encontramos el botón dentro deChildComponent
utilizando su atributoid
. Finalmente, utilizamos el métodosimulate()
para simular un evento de clic en el botón.Después de hacer clic en el botón, puedes verificar el resultado esperado en el estado de
ParentComponent
utilizando el métodoexpect()
.Siguiendo el enfoque anterior, puedes asegurarte de que la función en el componente padre esté cubierta por el código en el archivo de prueba utilizando
jest
yenzyme
.