Модульное тестирование модульного веб-приложения Javascript - PullRequest
5 голосов
/ 21 ноября 2011

Я создаю веб-приложение, используя BackboneJS и RequireJS, и мне нужно реализовать некоторую форму модульного тестирования для взаимодействия с пользовательским интерфейсом и извлечения данных через AJAX.Я сталкивался с QUnit и Жасмин , но не знаю, как я могу интегрировать это в свое приложение.

Если я тестирую такие вещи, как:

  • Правильно ли пользователь вошел в систему?
  • Получены ли данные с сервера в порядке?
  • Вызывает ли нажатие кнопки ожидаемый ответ?
  • Работают ли события кликов с динамически загружаемым html-содержимым?
  • Правильно ли приложение реагирует на изменения в URL-адресах хеш / push-состояний?

Я думаю, что тестирование должно быть напрямуювстроен в мое приложение, чтобы иметь доступ к определенным объектам JS, работать с данными, относящимися к сеансу, и реагировать на изменения в URL-адресах push-состояний.

Как интегрировать QUnit или Jasmine (или другие предложения) в мое модульное приложение для модульного тестирования таких функций?

Ответы [ 3 ]

4 голосов
/ 21 ноября 2011

Модульное тестирование действительно просто.

Вы создаете тестовую страницу HTML. Вы включаете QUnit / NodeUnit / Жасмин / TestLibraryOfChoice

Затем вы используете requireJS и загружаете один из ваших модулей JavaScript,

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

Возможно, вам придется макетировать ajax и писать HTML-макеты

2 голосов
/ 21 ноября 2011

Dojo Objective Harness (DOH) - это очень хороший фреймворк для модульных тестов, который не зависит от браузера и поддерживает тестирование асинхронных функций, см. здесь для пошагового руководства.

Тем не менее, из ваших тестовых примеров выглядит, что вы хотите что-то большее, чем интеграционный тест?Если так, то Selenium - хороший инструмент для автоматизации браузера.

Важно, что ни один из этих инструментов не потребует от вас изменения кода (если только вы не обнаружите ошибки :))

1 голос
/ 21 августа 2012

Если вы хотите увидеть пример, в котором модули на основе requireJS проходят модульное тестирование с использованием QUnit, загрузите эталонную архитектуру javascript по адресу http://boilerplatejs.org.

Отказ от ответственности: я являюсь основным автором этого.

...