Рубрики
Без рубрики

Тестирование узла API с Mocha & Chai

Mocha (https://mochajs.org) – это богатый функциональный флажок JavaScript, работающая на Node.js и в браузере, делая асинхронное тестирование простым и веселым. Это («два плюс два – четыре», () => {…

Автор оригинала: Ezekiel Ekunola.

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

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

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

Чай Библиотека устойчивости к NODEJS и браузеру представляет собой BDD (разработка по поведению, основанное на разработке)/TDD (TEST-DEVICE) для 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);

Тест сервера

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

Во-первых, для создания нашей папки проекта и инициализируйте его с NPM для генерации Package.json файл.

npm init -y

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

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

Setup Server.

Создать 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 Файл внутри Тест каталог создан.

Примечание. Причина, по которой мы добавляем наши тесты на Тест Каталог – это то, что 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

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

Испытание успеха

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

Тест ошибки

Найти код, используемый в этом проекте на Github Найти больше информации о Mocha здесь Найти больше информации о Chai здесь

Заключение

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

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