Модульное тестирование приложения Node.js
Node.js - это широко используемая библиотека javascript, основанная на движке JavaScript V8 Chrome для разработки серверных приложений в веб-разработке.
Модульное тестирование - это метод тестирования программного обеспечения, при котором отдельные модули / компоненты тестируются изолированно. Единицу можно описать как наименьшую тестируемую часть кода в приложении. Модульное тестирование обычно выполняется разработчиками на этапе разработки приложения.
В Node.js доступно множество фреймворков для запуска модульных тестов. Некоторые из них:
- Мокко
- Шутка
- Жасмин
- AVA
Модульное тестирование для узлового приложения с использованием этих фреймворков:
- Mocha: Mocha - это старый и широко используемый фреймворк для тестирования узловых приложений. Он поддерживает асинхронные операции, такие как обратные вызовы, обещания и async / await. Это хорошо расширяемая и настраиваемая структура, которая поддерживает различные утверждения и фиктивные библиотеки.
Чтобы установить его, откройте командную строку и введите следующую команду:
# Устанавливается по всему миру npm установить mocha -g # устанавливает в текущий каталог npm install mocha --save-dev
Как использовать мокко?
Чтобы использовать эту структуру в своем приложении:- Откройте корневую папку вашего проекта и создайте в ней новую папку под названием test .
- Внутри тестовой папки создайте новый файл с именем test.js, который будет содержать весь код, связанный с тестированием.
- откройте package.json и добавьте следующую строку в блок скриптов.
"scripts": { «тест»: «мокко - рекурсивный - выход» }
Пример:
// Requiring module
const assert = require(
'assert'
);
// We can group similar tests inside a describe block
describe(
"Simple Calculations"
, () => {
before(() => {
console.log(
"This part executes once before all tests"
);
});
after(() => {
console.log(
"This part executes once after all tests"
);
});
// We can add nested blocks for different tests
describe(
"Test1"
, () => {
beforeEach(() => {
console.log(
"executes before every test"
);
});
it(
"Is returning 5 when adding 2 + 3"
, () => {
assert.equal(2 + 3, 5);
});
it(
"Is returning 6 when multiplying 2 * 3"
, () => {
assert.equal(2*3, 6);
});
});
describe(
"Test2"
, () => {
beforeEach(() => {
console.log(
"executes before every test"
);
});
it(
"Is returning 4 when adding 2 + 3"
, () => {
assert.equal(2 + 3, 4);
});
it(
"Is returning 8 when multiplying 2 * 4"
, () => {
assert.equal(2*4, 8);
});
});
});
Скопируйте приведенный выше код и вставьте его в файл test.js, который мы создали ранее. Чтобы запустить эти тесты, откройте командную строку в корневом каталоге проекта и введите следующую команду:
npm запустить тест
Выход:
Что такое Чай?
Chai - это библиотека утверждений, которая часто используется вместе с Mocha. Его можно использовать в качестве библиотеки утверждений TTD (Test Driven Development) / BDD (Behavior Driven Development) для Node.js, которая может быть объединена с любой платформой тестирования на основе JavaScript. Подобно оператору assert.equal () в приведенном выше коде, мы можем использовать Chai для написания тестов, подобных английским предложениям.Чтобы установить его, откройте командную строку в корневом каталоге проекта и введите следующую команду:
npm установить чай
Пример:
const expect = require(
'chai'
).expect;
describe(
"Testing with chai"
, () => {
it(
"Is returning 4 when adding 2 + 2"
, () => {
expect(2 + 2).to.equal(4);
});
it(
"Is returning boolean value as true"
, () => {
expect(5 == 5).to.be.
true
;
});
it(
"Are both the sentences matching"
, () => {
expect(
"This is working"
).to.equal(
'This is working'
);
});
});
Выход:
- Jest: Jest - также популярный фреймворк для тестирования, известный своей простотой. Он регулярно разрабатывается и поддерживается Facebook. Одной из ключевых особенностей jest является то, что он хорошо документирован и поддерживает параллельное выполнение тестов, т.е. каждый тест будет запускаться в своих собственных процессах, чтобы максимизировать производительность. Он также включает в себя несколько функций, таких как просмотр тестов, покрытие и моментальные снимки.
Вы можете установить его с помощью следующей команды:
npm install --save-dev шутка
Примечание. По умолчанию Jest ожидает найти все тестовые файлы в папке с именем « __tests__ » в вашей корневой папке.
Пример:
describe(
"Testing with Jest"
, () => {
test(
"Addition"
, () => {
const sum = 2 + 3;
const expectedResult = 5;
expect(sum).toEqual(expectedResult);
});
// Jest also allows a test to run multiple
// times using different values
test.each([[1, 1, 2], [-1, 1, 0], [3, 2, 6]])(
'Does %i + %i equals %i'
, (a, b, expectedResult) => {
expect(a + b).toBe(expectedResult);
});
});
Выход:
- Жасмин: Жасмин также является мощным фреймворком для тестирования и существует с 2010 года. Это фреймворк для разработки на основе поведения (BDD) для тестирования кода JavaScript. Он известен своей совместимостью и гибкостью с другими средами тестирования, такими как Sinon и Chai. Здесь тестовые файлы должны иметь определенный суффикс (* spec.js).
Вы можете установить его, используя следующую команду:
npm установить жасмин-узел
Пример:
describe(
"Test"
,
function
() {
it(
"Addition"
,
function
() {
var
sum = 2 + 3;
expect(sum).toEqual(5);
});
});
- AVA: AVA - это относительно новый минималистичный фреймворк, который позволяет одновременно запускать тесты JavaScript. Как и фреймворк Jest, он также поддерживает моментальные снимки и параллельную обработку, что делает его относительно быстрым по сравнению с другими фреймворками. Ключевые особенности включают отсутствие неявных глобальных переменных и встроенную поддержку асинхронных функций.
Вы можете установить его, используя следующую команду:
npm init ava
Пример:
import test from
'ava'
;
test(
'Addition'
, t => {
t.is(2 + 3, 5);
});