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

Я собираюсь показать вам основной и самый простой способ начать тестирование ваших приложений с помощью Mocha и Chai.

MochaJS - это среда тестирования Javascript, используемая для автоматического тестирования приложений. Его можно использовать как в серверном Javascript, так и в браузере. ChaiJS - это библиотека утверждений для узла, и, как и Mocha, Chai можно использовать в серверном Javascript или в браузере. Chai можно использовать с любым фреймворком для тестирования. Подробнее о Мокко и Чай.

Мы бы создали простую программу для переворота n строки. Итак, давайте настроим наш рабочий каталог. Для этого мини-проекта мы будем использовать два пакета npm.

Мокко npm install —save-dev mocha && Чай npm install —save-dev chai

Здесь флаг - save-dev сообщает npm, что нужно сохранить эти зависимости как dev-dependency. Если вы не знаете, что такое dev-dependency, это зависимости, которые нам нужны только во время разработки, а не в производстве.

Теперь давайте начнем с создания файла init. Откройте терминал (командная строка, если вы работаете в Windows). cd в ваш рабочий каталог. Начните свой проект, набрав npm init в рабочем каталоге.

$ mkdir testing-application
$ cd testing-application
$ npm init

И ответьте на задаваемые вопросы. Он сгенерирует для вас package.json файл.

QuickTip: Запустите npm init -y, чтобы ответить да на все вопросы.

Чтобы все было организовано, я бы рекомендовал вам создать отдельный каталог для всех сценариев тестирования. Назовем это тестами. Итак, mkdir tests && cd tests

По умолчанию Mocha ищет каталог с именем test. хотя вы можете указать путь к файлу в качестве аргумента команды при запуске команды mocha.

Поскольку мы находимся внутри каталога tests /, мы можем создать внутри него файл, который мы назовем strTest.js (touch strTest.js). Внутри этого файла будет написан наш тестовый скрипт. Давай сделаем это.

Установите Mocha и Chai с помощью npm install mocha chai --save. --save флаг для сохранения в package.json файле.

const mocha = require(’mocha’);     // require mocha
const chai = require(’chai’);       // require chai 

const expect = chai.expect;

describe(’Reverse String Test’, () => {
    // Code 
});

Мы описываем то, что хотим протестировать, используя describe(). Он принимает два параметра: String и функцию обратного вызова. Эта строка может быть чем угодно.

const mocha = require('mocha');
const chai = require('chai');

const expect = chai.expect;

describe('Reverse String Test', () => {
    it('Checks if the strings is reversed', () => {
        // Code 
    });
});

it() используется для описания того, какая функция будет протестирована в этом блоке кода. Вы можете писать вложенные describe() и it().

Теперь напишите функцию, которую хотите протестировать. В этом случае это будет функция для переворота строки. Мы создадим этот файл в корневом каталоге проекта, а не в каталоге test /. Назовите это strReverse.js. Итак, это будет примерно так:

module.exports = (someString) => {
    let revStr = someString.split('');
    revStr = revStr.reverse().join('');
    return revStr;
};

Теперь require() это в strTest.js скрипте, чтобы мы могли использовать его для тестирования.

const mocha = require('mocha');
const chai = require('chai');

const strReverse = require('../strReverse');   // require strReverse.js script

const expect = chai.expect;

describe('Reverse String Test', () => {
    it('Checks if the strings is reversed', () => {
        // Code 
    });
});

Все готово! Ну, почти. Теперь нам нужно написать наши тестовые примеры, чтобы Mocha мог протестировать его на разных входах и выходах.

Сохраните несколько тестовых значений в переменных. Я буду тестировать его по двум значениям.

let str1 = strReverse('Mocha is cool!!');
let str2 = strReverse('Chai is super supportive.');

Здесь начинается использование expect переменных.

expect(str1).to.equal('!!looc si ahcoM');
expect(str2).to.equal('.evitroppus repus si iahC')

Вы можете указать любое количество тестовых случаев. Итак, полный тестовый сценарий будет выглядеть примерно так:

const mocha = require('mocha');
const chai = require('chai');

const strReverse = require('../strReverse');   // require strReverse.js script

const expect = chai.expect;

describe('Reverse String Test', () => {
    it('Checks if the strings is reversed', () => {
        let str1 = strReverse('Mocha is cool!!');
        let str2 = strReverse('Chai is super supportive.');

        expect(str1).to.equal('!!looc si ahcoM');
        expect(str2).to.equal('.evitroppus repus si iahC');
    });
});

В файле package.json определите новый ключ test (может существовать. В этом случае измените его значение) внутри ключа скрипта и присвойте ему значение mocha.

Теперь запустите свой тестовый скрипт. npm test tests/strTest.js. При прохождении / невыполнении тестов mocha отправит вам подробный отчет и отчет об ошибках.

Результат этого теста:

[~/D/t/testing with mocha|3.6.5]
»»»» npm test tests/strTest.js                             0|14:27:26

> [email protected] test /home/abdus/Documents/test/testing with mocha
> ./node_modules/mocha/bin/mocha "tests/strTest.js"


  Reverse String Test
    ✓ Checks if the strings is reversed


  1 passing (18ms)

[~/D/t/testing with mocha|3.6.5]
»»»»                                                       0|14:27:30

Это все! Пойдите и исследуйте мокко самостоятельно. Жизнь слишком коротка, чтобы продолжать работу!

Подробнее откуда это взялось

Эта история публикуется в журнале Noteworthy, куда ежедневно приходят тысячи людей, чтобы узнать о людях и идеях, формирующих наши любимые продукты.

Следите за нашей публикацией, чтобы увидеть больше историй о продуктах и ​​дизайне, представленных командой Journal.