Hola, hoy vamos a ver cómo podemos realizar pruebas Unitarias usando Mocha en React Native.
Lo primero que tenemos que hacer es instalar las dependencias para las pruebas:
npm install --save-dev mocha chai sinon nyc istanbul-lib-coverage istanbul-reports npm install --save-dev mocha-junit-reporter npm install --save-dev @babel/core @babel/register @babel/preset-env
Crea un archivo de configuración para la cobertura de pruebas. Crea un archivo .nycrc
en la raíz de tu proyecto y agrega el siguiente contenido:
{ "all": true, "reporter": [ "lcov", "text-summary" ], "report-dir": "coverage" }
Esto configura la generación del informe de cobertura en el directorio coverage
.
Modifica la línea de comando de ejecución de tus pruebas en el archivo package.json
:
"scripts": { "test": "nyc mocha --require @babel/register test/*.js --reporter mocha-junit-reporter" "test_console": "nyc --reporter=lcov mocha --require @babel/register test/*.js" }
En este ejemplo, se asume que tus archivos de prueba se encuentran en la carpeta test
y tienen la extensión .js
. Puedes ajustar la ruta y el patrón de archivos según sea necesario.
Crea un archivo llamado .babelrc
{ "presets": [ "@babel/preset-env" ] }
Crea la carpeta test y añade un archivo prueba_login.js
const { expect } = require('chai'); const axios = require('axios'); const sinon = require('sinon'); const serviceContext = require('../context/serviceContext'); describe('Pruebas de login', () => { before(() => { sinon.stub(axios, 'post').resolves({ data: { token: 'example_token' } }); }); after(() => { axios.post.restore(); }); it('debería realizar una llamada de login exitosa', async () => { const email = 'example@example.com'; const password = 'password123'; const response = await serviceContext.login(email, password); expect(response).to.have.property('token').to.equal('example_token'); }); it('debería manejar un error en la llamada de login', async () => { axios.post.rejects(new Error('Error en la llamada de login')); const email = 'example@example.com'; const password = 'password123'; try { await serviceContext.login(email, password); } catch (error) { expect(error.message).to.equal('Error en la llamada de login'); } }); });
Asegúrate de ajustar la ruta y los nombres de archivos según la estructura de tu proyecto.
Para ejecutar las pruebas invoca:
npm test
Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.