Тестирование Node API с помощью Mocha и Chai

Мокко — это многофункциональная среда тестирования JavaScript, работающая на Node.js и в браузере, которая делает асинхронное тестирование простым и увлекательным.

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. 
});

Что такое Чай?

Чай — это библиотека утверждений BDD (разработка, управляемая поведением) / TDD (разработка, управляемая тестированием) для nodejs и браузера, которую можно прекрасно сочетать с любой средой тестирования javascript.

Типы утверждений

Chai имеет несколько интерфейсов, из которых разработчики могут выбирать. Они есть:

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);

Тест сервера

Теперь я хотел бы провести нас через процесс настройки базового Node API и написания тестов для него.

Прежде всего, создайте папку нашего проекта и инициализируйте ее с помощью npm, чтобы сгенерировать package.json файл.

npm init -y

Установите зависимости, выполнив приведенные ниже команды на своем терминале.

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

Сервер настройки

Создать app.js в корне вашего проекта и добавьте приведенный ниже код, чтобы создать сервер с Express, а также с конечными точками, которые мы будем тестировать.

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;

Сценарии установки

Добавьте тестовый скрипт в package.json файл.

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

Пишите тесты

Создайте тестовый каталог в своем проекте, а затем создайте app.test.js файл внутри test директория создана.

Примечание. Причина, по которой мы добавляем наши тесты в test directory заключается в том, что mocha по умолчанию ищет тестовый каталог в вашем проекте, хотя это можно настроить в соответствии с вашим стилем. Найди больше здесь

Затем добавьте код ниже

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();
      });
  });
});

На этом этапе ваша структура папок должна выглядеть так, как показано на рисунке ниже.
Структура папок

Чтобы запустить тест, выполните приведенную ниже команду на своем терминале.

npm test

После запуска теста, если тест пройден, вы должны получить успешный ответ на своем терминале, как показано в примере ниже.
Тест успеха

… и если тест не пройден, ответ об ошибке на вашем терминале, как показано в примере ниже
Проверка ошибок

Найдите код, используемый в этом проекте, на Гитхаб
Найдите больше информации о Мокко здесь
Найдите больше информации о Чай здесь

Вывод

В этой статье мы рассмотрели настройку тестирования с помощью Mocha и Chai, а также написание тестов для нашего Node API. Я бы улучшил эту статью и проект по интеграции инструмента непрерывной интеграции под названием Travis-CI.

Если у вас есть какие-либо вопросы или отзывы об этой статье, не стесняйтесь оставлять комментарии.
Спасибо за чтение.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *