Автор оригинала: 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.
Если у вас есть какие-либо вопросы или отзывы об этой статье, не стесняйтесь оставить комментарий. Спасибо за прочтение.