TL; DR: Нужен для новичков? Жасмин автономный. Вам нужно кроссбраузерное тестирование и Node.js? Жасмин + Карма или Мокко + Карма.

Ладно-ладно, это не драка! Но это сравнение трех громких имен в модульном тестировании JavaScript. В этой статье мы разберем основы жасмина, мокко и кармы.

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

Одним из преимуществ Jasmine является то, что он содержит как библиотеку утверждений, так и среду тестирования. Вот пример набора тестов, который вы могли бы написать для проверки своей функции numberChecker ().

Блоки «описать» и «оно» - это встроенные методы, которые поставляются с фреймворками тестирования Jasmine и Mocha. Это известно как интерфейс разработки, основанного на поведении, поскольку он позволяет нам использовать простой английский язык для организации наших тестов (спасибо, BDD!).

В строке 4 вы видите утверждение в стиле expect (). Это правильный синтаксис при использовании библиотеки утверждений Jasmine. Каждый ваш тест будет начинаться со слова «ожидать». Вторая половина утверждения (в данном случае .toEqual ()) называется сопоставлением. Есть еще много вариантов сопоставления для написания ваших тестов, которые можно найти в документации Jasmine.

Жасмин Автономный

Самый простой способ начать работу с Jasmine - загрузить последний автономный выпуск здесь, а затем сохранить его в том же каталоге, где находятся ваши тестовые и исходные файлы. Автономные файлы включают HTML-файл, который вы редактируете для подключения к файлам, а затем запускаете в браузере. Jasmine запустит ваши тесты (также известные как спецификации) и отобразит результат прошел / не прошел для каждого в браузере. Одна из приятных особенностей Jasmine заключается в том, что при желании он может рандомизировать ваши тесты. Для этого с помощью Mocha вам понадобятся надстройки.

Жасмин + Node.js

Вы также можете использовать Jasmine с Node.js, установив пакет npm jasmine-node. При использовании Node.js с Jasmine или Mocha следует отметить одну вещь: вы должны экспортировать каждую переменную или выражение функции из исходного файла и требовать, чтобы исходный файл находился в верхней части файла спецификации. Имена файлов ваших спецификаций также должны заканчиваться на «spec.js» при использовании jasmine-node. Наконец, убедитесь, что в файле jasmine.json указаны правильные пути к файлам спецификаций и исходным файлам.

При использовании jasmine-node результаты вашего теста будут отображаться в терминале. Вы также можете отобразить их в своей среде IDE. Например, в Visual Studio Code это можно сделать с помощью расширения Jasmine Test Explorer.

Mocha + Node.js

Mocha - это только среда тестирования и не имеет собственной библиотеки утверждений, поэтому вы можете выбрать то, что вам больше нравится. Chai - самая популярная библиотека утверждений для использования с мокко. К другим параметрам библиотеки утверждений относятся should.js, expect.js или модуль assert Node.js. Преимущество Chai в том, что он позволяет вам выбирать разные стили утверждения, включая expect (), assert () или should ().

Вот то же утверждение из строки 4 в приведенном выше примере, написанное как утверждение в стиле Chai should:

numberChecker(3).should.eql("odd")

Mocha разработан для использования в качестве пакета npm. Начать работу с Mocha в Node.js очень просто, просто не забудьте установить библиотеку утверждений для работы с ней. Вам не нужно редактировать файл конфигурации, как для jasmine-node. Mocha будет искать как ваши тестовые файлы, так и исходные файлы, которые будут храниться в каталоге под названием «test». Используя Node.js, ваши результаты будут отображаться в терминале, или вы можете использовать расширение, такое как Mocha Sidebar для Visual Studio Code.

Мокко CDN

Также есть ссылка на CDN для мокко на unpkg.com. Вы можете включить это в HTML-файл, чтобы запустить мокко в браузере. Не забудьте также включить тег скрипта для предпочитаемой библиотеки утверждений. Загрузите HTML-файл в браузер, и Mocha запустит ваши тесты и отобразит результаты в браузере.

Карма

Karma - это оболочка, которая обходит любую платформу тестирования и библиотеку утверждений, которую вы хотите использовать. Автономной конфигурации нет, она доступна только в виде пакета npm. Основное преимущество Karma заключается в том, что он может запускать тесты проекта Node.js в браузере или в нескольких браузерах! Карму очень легко настроить для запуска тестов в нескольких браузерах. Кроссбраузерное тестирование не встроено ни в Jasmine, ни в Mocha.

Karma также может запускать ваши тесты автоматически каждый раз, когда вы сохраняете свой проект. Он запускает HTTP-сервер, запускает ваши тестовые файлы в одном или нескольких браузерах и сообщает вам результаты в браузере и терминале. Результаты будут отображаться по-разному в зависимости от того, какую среду тестирования вы решите использовать.

Ты сделал это! Вы здесь настоящий победитель, потому что теперь вы можете поделиться некоторыми знаниями о трех популярных инструментах тестирования javascript.