Tiempo de lectura: 2 minutos
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
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
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"
}
{
"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
:
"test": "nyc mocha --require @babel/register test/*.js --reporter mocha-junit-reporter"
"test_console": "nyc --reporter=lcov mocha --require @babel/register test/*.js"
"scripts": {
"test": "nyc mocha --require @babel/register test/*.js --reporter mocha-junit-reporter"
"test_console": "nyc --reporter=lcov mocha --require @babel/register test/*.js"
}
"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"
]
}
{
"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', () => {
sinon.stub(axios, 'post').resolves({ data: { token: 'example_token' } });
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';
await serviceContext.login(email, password);
expect(error.message).to.equal('Error en la llamada de login');
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');
}
});
});
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.
Post Views: 2
Relacionado