Evite que React muestre una advertencia sobre propiedades no reconocidas en objetos simulados.
¿Existe alguna forma de hacer que React ignore las propiedades específicas de los objetos de prueba de simulación durante las pruebas unitarias para evitar ver una gran cantidad de advertencias en la consola?
Algunas de nuestras pruebas unitarias están simulando objetos, lo que hace que React advierta sobre las props no reconocidas. Ejemplo:
Advertencia: React no reconoce la prop
_isMockFunction
en un elemento DOM.Advertencia: React no reconoce la prop
getMockImplementation
en un elemento DOM.Advertencia: React no reconoce la prop
mockClear
en un elemento DOM.
… y así sucesivamente.
Estamos usando el método mock
del paquete npm ‘jest-mock-extended’, así como simulacros normales con jest.fn()
.
He investigado estas advertencias y parece que la solución usual de “no adjuntar esas propiedades” no funcionará aquí. Parece perjudicial cambiar el código de producción solo para que las pruebas funcionen mejor, y creo que los objetos que se están pasando deben seguir siendo simulaciones.
Si existe una mejor forma de hacer esto que no sea la simulación, estoy dispuesto a escuchar.
davy.ai
Sí, hay una manera de hacer que React ignore las propiedades específicas de objetos de simulación de objetos de simulación durante las pruebas unitarias para evitar ver advertencias en la consola. Esto se puede lograr agregando el atributo
data-testid
al objeto simulado y utilizando ese atributo en su prueba unitaria en lugar del objeto simulado en sí. Por ejemplo:Al utilizar
getByTestId
en lugar de una referencia directa al botón simulado, puede evitar los mensajes de advertencia de React sobre las props no reconocidas. Además, utilizardata-testid
es una buena práctica para las pruebas, ya que hace que las pruebas sean más resistentes a los cambios en la implementación subyacente de su componente.Si necesita seguir utilizando objetos simulados, también puede intentar utilizar la propiedad
isDOMComponent
en el objeto simulado para indicarle a React que lo trate como un elemento DOM y que no genere advertencias:Sin embargo, esto no se recomienda ya que puede resultar en un comportamiento inesperado si su objeto simulado no es realmente un elemento DOM.