QUnit, chai и mocha

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