QUnit, chai и mocha
Agility HackersМы рассмотрим одни из самых популярных фреймворков и библиотек для тестирования: QUnit, chai и mocha. Но для начала определимся, как должен выглядеть код на JavaScript, чтобы его спокойно покрыть тестами.
👉🏻Что может помешать автоматическому тестированию:
• Недостаток структурированности. Часто происходит в коллбэке (document).ready() — и, так как это анонимная функция, к ней невозможно обратиться и протестировать
• Слишком сложные функции. Если в функции больше 10 строк кода, как в обработчике отправки формы, то эта функция, выполняет очень много вещей
• Скрытые состояния
• Избыточная связанность функционала. К примеру, обработчику $.ajax необязательно иметь доступ к DOM.
👉🏻Что же должно быть в коде?
Сперва нужно разбить код на 4 зоны ответственности:
• представление и пользовательское взаимодействие;
• управление данными;
• общее состояние приложения;
• настройка и код-прослойка, чтобы все части работали вместе;
Затем:
• Отдельные фрагменты кода отделить как объекты в одной из четырёх зон ответственности, и не связывать с объектами из других зон.
• Поддерживать возможность настройки вместо того, чтобы задавать конкретные значения определённым параметрам. Это предотвратит необходимость повторения всего HTML-окружения, чтобы написать тесты.
• Метод объекта сделать простым и коротким. Этот пункт позволит иметь простые и читаемые тесты.
• Для создания объектов использовать конструкторы. Это поможет создать «чистые» копии объектов, необходимых для тестирования.
Теперь обратимся непосредственно к статьям с примерами о популярных фреймворках для автоматического юнит-тестирования. Приведённые в них листинги помогут разобраться на практике, как надо писать тесты:
QUnit
«Учимся тестировать JavaScript код»
Автор рассказывает и показывает, как пользоваться этой библиотекой от создателей jQuery. На примере несложного проекта объясняется принцип работы методов, тестирование асинхронных функций в Ajax и «интерфейсных» частей кода. Также описывается, как с помощью phantom.js автоматизировать процесс.
«QUnit. Тестирование javascript кода»
В статье описываются преимущества этого инструмента и приводится пример тестирования на функции trim. Кроме того автор приводит примеры крутых тестов.
Chai и mocha
«Автоматические тесты при помощи chai и mocha»
Рассматривается подход BDD (Behaviour Driven Development) к тестированию. Автор для примера разрабатывает функцию pow(x,n) и проходит через весь цикл: от спецификации до завершения тестирования и доработки.
Do unit-testing,
Agility Hackers