{"id":14291,"url":"\/distributions\/14291\/click?bit=1&hash=257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","hash":"257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","title":"\u0420\u0435\u043a\u043b\u0430\u043c\u0430 \u043d\u0430 Ozon \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043c \u043d\u0435 \u043f\u0440\u043e\u0434\u0430\u0451\u0442","buttonText":"","imageUuid":""}

Jest vs Mocha

Почему большинство разработчиков боятся вносить изменения в свой код? Они боятся, что сломают его! Почему они боятся сломать его? Потому что у них нет тестов.

Роберт С. Мартин (из книги Чистый код)

Зачем нужны Unit-тесты? Ведь они тормозят разработку новых фич? (ха ха ха)

Вообще Unit-тесты являются важной практикой разработки по нескольким причинам:

  • Обеспечение надежности вашего кода. Так как unit-тесты позволяют проверить отдельные компоненты кода на правильность работы. Это помогает выявить и исправить ошибки и проблемы до того, как они повлияют на работу всего приложения. Тесты помогают убедиться, что код выполняет свою задачу правильно и не содержит скрытых ошибок.
  • Упрощение рефакторинга. Unit-тесты обеспечивают надежность при внесении изменений в код. Они позволяют убедиться, что после рефакторинга код по-прежнему работает корректно. Без тестов рефакторинг может быть опасным, так как изменения могут привести к непредсказуемым ошибкам — поправили один кусочек кода сломался другой 🤓
  • Ускорение разработки. Как не странно, но тесты помогают автоматизировать процесс проверки кода. Они позволяют быстро обнаруживать ошибки и проблемы, что упрощает отладку и ускоряет разработку. Тесты также служат документацией для кода, помогая разработчикам лучше понять его функциональность и использование.
  • Улучшение архитектуры. Тесты способствуют созданию хорошей архитектуры приложения. Они помогают разделить код на независимые компоненты, что делает его более модульным и легко тестируемым. Тесты также способствуют созданию более гибкого и расширяемого кода.

В целом, в крупных компаниях Unit-тесты являются неотъемлемой частью процесса разработки, так как они автоматический запускаются в вашем Pipeline (нет тестов — нет долгожданных Build Success ✅) помогая обеспечить качество и надежность кода, на тестовых стендах или в прод среде.
Я очень не любил их писать в начале своей карьеры, но я осознал всю их силу.

Сейчас самые популярные фреймворки для Unit-тестирования вашего JS кода — Jest и Mocha. В этой статье я постарался описать их достоинства и недостатки.

Jest

Jest — это восхитительный фреймворк с открытым исходным кодом для тестирования JavaScript с акцентом на простоту. Да Jest очень прост в использовании так как не требует дополнительных настроек и у него очень хорошая документация (https://jestjs. io/ru/) с кучей примеров. Его можно использовать для тестирования проектов на Node. js, React, Angular и т. д. Устанавливается через npm или yarn.
Кстати, по умолчанию используется для Create React App.

Что может Jest:

  • Помогает в написании тестовых кейсов и наборов тестов, например, для тестирования компонентов React.
  • Предоставляет информацию о покрытии кода (классная табличка с процентами покрытия вашего кода) и анализе тестовых кейсов.
  • Поддерживает широкий спектр утилит для проверки утверждений (например, toBe, equal, expect и т. д.).
  • Отвечает за автоматическое нахождение и запуск тестов из проекта, чтобы нам не приходилось это делать вручную.
  • Позволяет запускать несколько тестов параллельно.

Как у любого инструмента есть и минусы:

  • Тесты на Jest не могут быть написаны на TypeScript.
  • Вы не можете просто экспортировать глобальные переменные для всех наборов тестов.
  • Jest не знает, как обрабатывать аргументы для скриптов.
  • Jest не может вкладывать наборы тестов друг в друга.
  • Jest запускается и в целом работает медленнее, чем другие тестовые фреймворки.
  • Jest конфигурации не могут быть написаны в виде модулей ES6 без использования сторонних инструментов (например, Babel и т. д.).

Mocha

Mocha — это многофункциональный фреймворк для тестирования JavaScript, который помогает вам писать эффективные, поддерживаемые тесты в более быстром темпе. Он поддерживает Node.js и не зависит от браузера, а также поддерживает асинхронное тестирование.

Какие преимущества у Mocha:

  • Поддержка нескольких тестовых фреймворков.
  • Mocha поддерживает разработку через тестирование (TDD) и разработку через управление поведением (BDD).
  • Богатый набор функций проверки утверждений (как и у Jest).
  • Обеспечивает простую настройку и конфигурацию.
  • Обширные возможности отчетности (больше чем у Jest).
  • Работает быстро.
  • Mocha выделяет медленные тесты после тестового прогона.

Минусы:

  • Слабая документация.
  • Порог вхождения выше чем у Jest.
  • Ограниченная поддержка некоторых функций.
  • Требуется дополнительное изучение для продвинутых стратегий тестирования.
  • Тестирование моментальных снимков не поддерживается по умолчанию; вам нужно зависеть от внешних библиотек.

Что же выбрать?

Какой фреймворк будет работать лучше для вас полностью зависит от требований вашего проекта. Если у вас большой интерпрайз проект, требующий гибкости и настраиваемости, и большая команда разработки, то вероятно, Mocha — это выбор для вас. У вас средний проект и вам не нужна дополнительная настройка и конфигурация с самого начала, то Jest, вероятно, является лучшим вариантом.

Если смотреть на популярность в 2022 году, то Jest конечно опережает Mocha, но все может измениться…

Рейтинг фреймворков для тестирования
0
Комментарии
-3 комментариев
Раскрывать всегда