Prueba de API de nodo con Mocha y Chai

Moca es un marco de prueba de JavaScript rico en funciones que se ejecuta en Node.js y en el navegador, lo que hace que las pruebas asincrónicas sean simples y divertidas.

it('two plus two is four', () => {
  expect(2 + 2).to.equals(4); 
});
it("adds 2 numbers", (done) => {
  // perform asynchronous actions
  // write tests done(); 
  // call the done function after test. 
});

¿Qué es Chai?

Chai es una biblioteca de aserciones BDD (Behaviour-Driven Development) / TDD (Test-Driven Development) para nodejs y el navegador que se puede combinar maravillosamente con cualquier marco de prueba de JavaScript.

Tipos de afirmación

Chai tiene varias interfaces entre las que los desarrolladores pueden elegir. Están:

chai.should();
foo.should.be.a('string'); 
foo.should.equal('bar');
foo.should.have.lengthOf(3);
tea.should.have.property('flavors').with.lengthOf(3);
var expect = chai.expect; 
expect(foo).to.be.a('string');
expect(foo).to.equal('bar'); 
expect(foo).to.have.lengthOf(3); expect(tea).to.have.property('flavors').with.lengthOf(3);
var assert = chai.assert;
assert.typeOf(foo, 'string'); 
assert.equal(foo, 'bar'); 
assert.lengthOf(foo, 3);
assert.property(tea, 'flavors');
assert.lengthOf(tea.flavors, 3);

Prueba de servidor

Ahora, nos llevaría a través del proceso de configuración de una API de nodo básica y escribir pruebas para ella.

Lo primero es crear nuestra carpeta de proyecto e inicializarla con npm para generar el package.json expediente.

npm init -y

Instale las dependencias ejecutando los siguientes comandos en su terminal

npm i express --save
npm i mocha chai chai-http --save-dev

Servidor de configuración

Crear un app.js archivo en la raíz de su proyecto y agregue el código a continuación para crear un servidor con express y también puntos finales que estaríamos probando.

const express = require("express");

const app = express();

app.use(express.json());

app.get("/", (req, res) => {
  res.json({ status: "success", message: "Welcome To Testing API" });
});

app.post("/add", (req, res) => {
  const { num1, num2 } = req.body;
  const add = (num1, num2) => {
    return num1 + num2;
  };
  res.json({
    status: "success",
    result: "Welcome To Testing API",
    result: add(num1, num2)
  });
});

const PORT = process.env.PORT || 3000;

app.listen(PORT, () => console.log(`App listening on port ${PORT}`));

module.exports = app;

Guiones de configuración

Agregar script de prueba a package.json expediente.

"scripts": { 
  "test": "mocha" 
 }

escribir pruebas

Cree un directorio de prueba en su proyecto y luego cree un app.test.js archivo dentro del test directorio creado.

Nota: La razón por la que agregamos nuestras pruebas al test directory es que mocha busca un directorio de prueba en su proyecto de forma predeterminada, aunque esto se puede configurar para que se adapte a su estilo. Encuentre más aquí

Luego agregue el código a continuación

const app = require("../app");
const chai = require("chai");
const chaiHttp = require("chai-http");

const { expect } = chai;
chai.use(chaiHttp);
describe("Server!", () => {
  it("welcomes user to the api", done => {
    chai
      .request(app)
      .get("/")
      .end((err, res) => {
        expect(res).to.have.status(200);
        expect(res.body.status).to.equals("success");
        expect(res.body.message).to.equals("Welcome To Testing API");
        done();
      });
  });

  it("adds 2 numbers", done => {
    chai
      .request(app)
      .post("/add")
      .send({ num1: 5, num2: 5 })
      .end((err, res) => {
        expect(res).to.have.status(200);
        expect(res.body.status).to.equals("success");
        expect(res.body.result).to.equals(10);
        done();
      });
  });
});

En este punto, la estructura de su carpeta debería verse como la imagen de abajo
Estructura de carpetas

Para ejecutar la prueba, ejecute el siguiente comando en su terminal.

npm test

Una vez que se ejecuta la prueba, si la prueba pasa, debería obtener una respuesta exitosa en su terminal como el ejemplo que se muestra a continuación
Prueba de éxito

…y si la prueba falla, una respuesta de error en su terminal como el ejemplo que se muestra a continuación
Prueba de error

Encuentre el código utilizado en este proyecto en Github

Encuentre más información sobre Moka aquí

Encuentre más información sobre Chai aquí

Conclusión

En este artículo, hemos podido analizar la configuración de pruebas con Mocha y Chai y también escribir pruebas para nuestra API de nodo. Estaría mejorando este artículo y proyecto para integrar una herramienta de integración continua llamada Travis-CI.

Si tiene alguna pregunta o comentario sobre este artículo, no dude en dejar un comentario.
Gracias por leer.

Similar Posts

Leave a Reply

Your email address will not be published.