¿Hay alguna manera de probar componentes funcionales construidos usando ganchos React mediante un montaje superficial del componente? Me encontré con Enzyme no compatible useEffect
( https://airbnb.io/enzyme/#react-hooks-support ) y otros ganchos con una representación superficial de un componente y no quiero entrar en el montaje.
También resultó react-testing-library
ser una alternativa nueva y popular. ¿Es una mejor opción en comparación con Enzyme? Ya lo he Enzyme
usado para probar componentes basados en clases. Entonces, hay un dolor involucrado en reescribirlos.
Sí, puedes, pero necesitarás usar espías . Por ejemplo, si está usando jest
, puede usar jest.spyOn con mockImplementationOnce () , también debería funcionar con otras spying
bibliotecas.
Ejemplo de uso:
describe("React useEffect", () => {
let useEffect, wrapper
let mockUseEffect = () => {
useEffect.mockImplementationOnce(f => f())
}
beforeEach(() => {
useEffect = jest.spyOn(React, "useEffect")
mockUseEffect()
wrapper = shallow(<SomeComponent />)
})
it("your test", () => {
// using wrapper
})
}
Aquí hay un bonito artículo detallado de "Will Ockelmann-Wagner" y agregué un ejemplo de trabajo de codeSandbox .
Aunque funciona, te animo a que no uses shallow
renderizado y empieces a usar react-testing-library
(llamado @ testing-library / react hoy en día). Es una solución de prueba ligera y bien documentada, y yo diría que es la prueba "más cercana" que puedes llegar a escenarios del mundo real. Viene ya con CRA por defecto.
Aquí hay un ejemplo básico de codeSandbox y aquí hay más ejemplos de React Docs.
Además, aquí hay un gran video de Kent C. Dodds que aborda las diferencias entre el shallow
renderizado y el render
enfoque de la biblioteca de pruebas de reacción.
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras