- Оригинальный адрес:JavaScript unit testing frameworks: Comparing Jasmine, Mocha, AVA, Tape and Jest
- Оригинальный автор:Ben Harding
- Перевод с:Программа перевода самородков
- Постоянная ссылка на эту статью:GitHub.com/rare earth/gold-no…
- Переводчик:ClarenceC
- Корректор:dearpork,Xekin-FE
Среды модульного тестирования JavaScript: сравнение Jasmine, Mocha, AVA, Tape и Jest
При запуске нового внешнего проекта я часто задаю себе два вопроса: «Какую среду модульного тестирования JavaScript мне следует использовать?» и «Должен ли я тратить время на добавление тестового кода?»
Мои коллеги часто пишут о том, как модульное тестирование может успокоить ум и уменьшить количество ошибок в программном обеспечении. Так что явсегда находите время для тестирования. Но какой фреймворк выбрать для тестирования в своем проекте? Прежде чем перейти к решению, я собрал 5 самых популярных фреймворков модульного тестирования JavaScript, чтобы вы могли решить, какой из них подходит именно вам.
Примечание. Если у вас уже есть предпочитаемая среда тестирования и ее нет в списке ниже, сообщите мне об этом в комментариях, и я добавлю ее в статью.
Фреймворки модульного тестирования JavaScript: сравнение
Jasmine
Одна из самых популярных сред модульного тестирования Javascript,JasmineПредоставляет все необходимые функции из коробки.
- Jasmine поставляется с ассертами (assertions), шпионами (используемыми для симуляции среды выполнения функций) и mocks (мок-инструментами), прекрасно оснащенными почти всем, что нужно для начала написания модульных тестов. Jasmine легко инициализируется и настраивается, и вы все равно можете добавить некоторые библиотеки, если вам нужны некоторые функции модуля.
- Globality позволяет сразу же приступить к тестированию вашего приложения. Хотя я не большой поклонник глобальных переменных, не так уж много несоответствий с тем, что Jasmine предоставляет все функции, необходимые разработчику из коробки.
- Я считаю, что автономная версия упрощает понимание того, как все настроено, и позволяет вам сразу начать использовать ее.
- На сегодняшний день удалосьAngular 1илиAngular 2или комбинация более популярных библиотек, используемых
Мое отношение к Жасмин
Я не сторонник владения глобальной средой переменных, поэтому Жасмин понизит несколько баллов в моем маленьком блокноте. С другой стороны, он имеет много приятных функций из коробки. Он может показаться немного «старее», чем другие фреймворки в этом списке, но это не так уж и плохо, болевые точки, которые могут быть у других фреймворков, означают, что их должно быть легче исправить.
AVA
Минималистичная библиотека тестирования,AVAЕго сильные стороны — асинхронный характер JavaScript и одновременное выполнение тестов, что, в свою очередь, повышает производительность.
- AVA не создает для вас глобальную среду, поэтому вам легче контролировать то, что вы используете. Думаю, это вносит дополнительную ясность в тест, чтобы убедиться, что вы понимаете, что происходит.
- Использование асинхронной природы JavaScript дает дополнительные преимущества для тестирования. Основное преимущество заключается в том, что он оптимизирует время ожидания во время развертывания.
- Простой API сохранен, чтобы предоставить вам необходимую функциональность. Это более дружелюбно, если вы используете его с насмешкой, но вам нужно установить отдельную библиотеку
- Когда вы хотите знать, когда пользовательский интерфейс вашего приложения неожиданно изменитсяjest-snapshotОбеспечивает очень полезный тест моментальных снимков
Мое мнение на АВА
Ава"самый проницательный" - это минималистский подход, и он не владеет глобальной средой, что дает ему высокий балл в моей маленькой книге. Простой API делает тестирование более понятным. Когда вы выбираете среду модульного тестирования JavaScript, вам обязательно стоит попробовать библиотеку тестов AVA.
Tape
Это самый маленький фреймворк в этом списке фреймворков,TapeЭто самый простой и предоставляет самые основные функции.
- Как и AVA, Tape не предоставляет глобальные среды, вместо этого вы должны импортировать их самостоятельно. Это нормально, если не загрязняет окружающую среду.
- Tape не включает метод установки/удаления, вместо этого он выбирает многомодульную систему, где вам нужно явно определить код установки внутри каждого теста, чтобы сделать каждый тест более понятным. Это также предотвращает совместное использование состояния между тестами.
- Поддержка Typescript/coffeescript/es6
- Лента легко и быстро устанавливается и работает. Это файл JavaScript, который можно запускать в любой среде, в которой можно запускать JavaScript, без слишком большого количества параметров конфигурации.
Мой взгляд на ленту
Лента гордится тем, что включает в себя менее функциональный API более низкого уровня, чем AVA. Лента делает все проще и дает вам только то, что вам нужно. Вот почему Tape имеет высокий балл в моей маленькой книге и является одной из лучших сред модульного тестирования JavaScript, она позволяет вам больше сосредоточиться на продукте, чем на выборе инструментов.
Mocha
Как, пожалуй, наиболее используемая библиотека,Mocha— это гибкая библиотека, предоставляющая разработчикам только базовую тестовую структуру. Затем необходимо указать другие функциональные функции, такие как утверждения, шпионы, макеты и другие подобные функции, чтобы добавить другие библиотеки/плагины для завершения.
- Если вам нужна более гибкая конфигурация, импортирующая именно те библиотеки, которые вам нужны, то дополнительная установка Mocha и необходимая конфигурация — это то, на что вы должны обратить внимание.
- К сожалению, в приведенном выше пункте есть проблемы, он должен импортировать дополнительные библиотеки для реализации утверждений. Это означает, что его немного сложнее настроить, чем другие, если он не для длительного использования.Они говорят, что настройка обычно является одноразовой операцией, но я предпочитаю использовать «единственный источник правды» (документацию), а не прыгать между документы вверх и вниз
- Mocha импортирует тестовые структуры как глобальные переменные, экономя ваше время, которое вам больше не нужно.
include
Или запросите его в каждом файле. Недостатком является то, что эти плагины все равно требуют, чтобы вы их использовали.require
Импортируйте в него, это вызовет несоответствия, и если вы страдаете обсессивно-компульсивным расстройством, как я, это в конечном итоге сведет вас с ума!
Мое отношение к мокко
Я впечатлен масштабируемостью и несколькими различными способами настройки Mocha. Необходимость изучать Mocha, а затем необходимость изучать выбранную вами библиотеку утверждений действительно немного пугает меня. Гибкость заключается в высокой отдаче, которую она приносит утверждениям, шпионам и насмешкам.
Jest
Рекомендовано и используется Facebook и различными приложениями React,JestПолучил большую поддержку. Jest также оказался очень быстрой библиотекой тестирования вПараллельное тестированиев отчете.
- Для небольших проектов вам, возможно, не придется слишком беспокоиться в начале, и повышение производительности очень важно для людей, которые хотятНепрерывное развертываниеОчень хорошо для больших приложений
- В то время как разработчики в основном используют Jest для тестирования приложений React, Jest можно легко интегрировать в другие приложения, что позволяет вам использовать более уникальные функции в других местах.
- Моментальное тестирование — отличный инструмент, позволяющий убедиться, что пользовательский интерфейс вашего приложения не содержит непредвиденных ошибок, возникающих при замене рабочей версии. Хотя большая часть функциональности специально разработана для работы с React, ее также можно использовать в других фреймворках, если вы найдете подходящий плагин.
- В отличие от других библиотек в этом списке, Jest имеет очень широкий API и не требует от вас импорта дополнительных библиотек, если вам действительно не нужны дополнительные функции. с каждым их обновлениемJest продолжает значительно улучшать функциональность
Моё отношение к шутке
Там, где глобальные переменные являются недостатком, Jest — мощная библиотека, которая постоянно развивается. Он содержит много простой для понимания документации, помогающей в обучении, и поддерживает множество различных сред, которые отлично смотрятся при создании проектов.
Какую среду модульного тестирования JavaScript выбрать?
Изучив несколько разных фреймворков, я пришел к выводу, что не все фреймворки бывают черно-белыми.
Большинство фреймворков в конечном итоге (кроме Mocha) дадут вам то, что вам нужно в конце дня, это тестовая среда и механизм, гарантирующий, что данный X -> Y всегда возвращается, некоторые будут простыми. Дадут вам больше "яркие вещи".
Вы должны быть уверены в себе при их выборе, и мой выбор зависит от того, что вы и ваш конкретный проект хотите и в чем нуждаетесь.
- Если вам нужен широкий API и конкретная (возможно, уникальная) функциональность, Mocha может быть подходящим вариантом, потому что есть расширяемость.
- AVA или Tape отвечают минимальным экологическим требованиям. Очень хорошо, чтобы предоставить вам надежную базовую среду, чтобы вы могли быстро протестировать
- Если у вас большой проект или вы хотите быстро приступить к работе без особой настройки, тогда Jest будет хорошим выбором.
Надеюсь, это поможет вам при выборе фреймворка для модульного тестирования JavaScript. Дайте мне знать в комментариях, если вы хотите, чтобы я посмотрел на другие фреймворки модульного тестирования JavaScript! Я добавлю их в список позже.
Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,товар,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.