- Instalaciones:
yarn add --dev jest babel-jest @babel/preset-env @babel/preset-react
yarn add --dev @testing-library/react @types/jest jest-environment-jsdom
- Opcional: Si usamos Fetch API en el proyecto:
yarn add --dev whatwg-fetch
- Actualizar los scripts del package.json
"scripts: {
...
"test": "jest --watchAll"
- Crear la configuración de babel babel.config.js
module.exports = {
presets: [
[ '@babel/preset-env', { targets: { esmodules: true } } ],
[ '@babel/preset-react', { runtime: 'automatic' } ],
],
};
- Opcional, pero eventualmente necesario, crear Jest config y setup:
jest.config.js
module.exports = {
testEnvironment: 'jest-environment-jsdom',
setupFiles: ['./jest.setup.js']
}
jest.setup.js
// En caso de necesitar la implementación del FetchAPI
import 'whatwg-fetch'; // <-- yarn add whatwg-fetch
Buenas tardes,
Llegando a esta parte del curso me he encontrado con varios errores de cara a testear "Journal App" en la sección 21 , les detallo a continuación como solventarlos.
El primer error he identificado es que con la versión de FireBase "^9.17.1" estaba recibiendo el siguiente error:
Revisando el error vi que el problema principal estaba en este punto, en la importación del { collection, getDocs, getFireStore }:
Me dispuse a revisar la documentación de FireBase y ver si esta importación había cambiado en algún modo:
https://firebase.google.com/docs/firestore/query-data/get-data?hl=es-419#web-version-9_3
Asi que vi FireBase 9 no era necesario importar el /lite de 'firebase/firestore/lite':
Con lo cual los imports de los siguientes ficheros quedarían así sin el /lite al final:
src\firebase\config.js:
src\helpers\loadNotes.js
Con estos cambios se resolvieron los errores.
. . .
Un error adicional que tuve, fue a la hora de realizar el fetch de la imagen que iba a descargar de la siguiente URL:
https://img.freepik.com/vector-premium/linda-pequena-abeja-dibujos-animados-volando_188253-3805.jpg?w=900
Entonces recibí el siguiente error:
Buscando info en StackOverflow encontre el siguiente hilo:
https://stackoverflow.com/questions/58785617/cors-error-error-cross-origin-http-localhost-forbidden-in-reactjs-jest-te
Y gracias a esta respuesta se me encendió la bombilla:
El problema estaba en el sitio web al que accedía, que al ser al diferente del de Fernando parece ser que faltaban ciertas headers en la petición. Asi que busque otra imagen que no tuviese este problema y listo.
Quisiera añadir a modo de comentario que entiendo que este tipos de pruebas las realiza Fernando de manera didáctica y por ello realice estas pruebas de este modo, pero por mi experiencia profesional tanto en Angular como en API Rest con Express, a la hora de testear una funcionalidad que dependa de una petición a una API externa a nuestra aplicación es preferible mockear con Jest el resultado (tanto el caso en el que se resuelve OK como en el caso que da error y entrase por el catch).
Un saludo y espero a alguien pueda servirle de ayuda algún día.