Модульное тестирование приложения Node.js

Опубликовано: 29 Июля, 2021

Node.js - это широко используемая библиотека javascript, основанная на движке JavaScript V8 Chrome для разработки серверных приложений в веб-разработке.

Модульное тестирование - это метод тестирования программного обеспечения, при котором отдельные модули / компоненты тестируются изолированно. Единицу можно описать как наименьшую тестируемую часть кода в приложении. Модульное тестирование обычно выполняется разработчиками на этапе разработки приложения.

В Node.js доступно множество фреймворков для запуска модульных тестов. Некоторые из них:

  • Мокко
  • Шутка
  • Жасмин
  • AVA

Модульное тестирование для узлового приложения с использованием этих фреймворков:

  1. Mocha: Mocha - это старый и широко используемый фреймворк для тестирования узловых приложений. Он поддерживает асинхронные операции, такие как обратные вызовы, обещания и async / await. Это хорошо расширяемая и настраиваемая структура, которая поддерживает различные утверждения и фиктивные библиотеки.

    Чтобы установить его, откройте командную строку и введите следующую команду:

    # Устанавливается по всему миру
    npm установить mocha -g
    
    # устанавливает в текущий каталог
    npm install mocha --save-dev
    

    Как использовать мокко?
    Чтобы использовать эту структуру в своем приложении:

    1. Откройте корневую папку вашего проекта и создайте в ней новую папку под названием test .
    2. Внутри тестовой папки создайте новый файл с именем test.js, который будет содержать весь код, связанный с тестированием.
    3. откройте 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' );
    });
    });

    Выход:

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

    Выход:

  3. Жасмин: Жасмин также является мощным фреймворком для тестирования и существует с 2010 года. Это фреймворк для разработки на основе поведения (BDD) для тестирования кода JavaScript. Он известен своей совместимостью и гибкостью с другими средами тестирования, такими как Sinon и Chai. Здесь тестовые файлы должны иметь определенный суффикс (* spec.js).

    Вы можете установить его, используя следующую команду:

     npm установить жасмин-узел

    Пример:




    describe( "Test" , function () {
    it( "Addition" , function () {
    var sum = 2 + 3;
    expect(sum).toEqual(5);
    });
    });
  4. AVA: AVA - это относительно новый минималистичный фреймворк, который позволяет одновременно запускать тесты JavaScript. Как и фреймворк Jest, он также поддерживает моментальные снимки и параллельную обработку, что делает его относительно быстрым по сравнению с другими фреймворками. Ключевые особенности включают отсутствие неявных глобальных переменных и встроенную поддержку асинхронных функций.

    Вы можете установить его, используя следующую команду:

     npm init ava

    Пример:




    import test from 'ava' ;
    test( 'Addition' , t => {
    t.is(2 + 3, 5);
    });