Юнит-тесты на javascript? Реально ли?
Хочу написать юнит тесты для web-приложения, но сталкиваюсь с такой вещью:
Надо, например, заполнить форму и отправить ее. Пишем код: form = $("#form1").get(0) form['name'] = 'ляляля' form.submit() А дальше - элементарщина: если дожидаться события onload, и вешать на него анонимную функцию, то код будет выглядеть как куча вложенных друг в друга анонимных функций, вешающихся на одно и то же событие. Ну и по мелочи - проблемы типа кросс-доменного скриптинга, который рестриктед. Есть ли инструментарий, позволяющий создавать javascript юнит-тесты, например, под firefox, в процедурном стиле? |
Первую часть вашего сообщения не понял совершенно.
Про юнит-тесты, я одно время тоже загорелся идеей tdd разработки на JavaScript. Инструментария, скажем так, совсем не густо. Из более-менее приемлемых я нашел только JSUnit, который, кстати, отдельно поставляется в виде удобного плагина для платформы eclipse. Ну еще можно отдельно отметить Selenium, правда я его у себя поднять так и не смог. |
Цитата:
1) Загружаем в iframe форму логина 2) Заполняем поля login и password 3) Запускаем form.submit() Проблемы, с которыми я столкнулся: 1) Как дождаться события onload внутри iframe, чтобы продолжить тестирование, при этом не запихивая вторую половину теста в анонимную фукнцию, подвешиваемую в качестве обработчика этого onload? 2) iframe с тестами должен находиться в том же домене, что и тестируемый сайт => невозможно средствами javascript протестировать случай "не упал ли сервер". 3) Невозможно средствами javascript узнать полученные от сервера HTTP заголовки. |
Не так давно появился отличный инструмент для модульного тестирования (unit testing) JsTestDriver. Вот, написал небольшой обзор. Впечатления от использования только положительные. Рекомендую попробовать.
Кстати, описываемый пример в первом посте не является юнит-тестом. Это скорее функциональный тест. |
К сожалению большинство js-кода юнит-тестами не покроешь.
|
Это всё очень специфично. Код бывает разный.
Главное, что меня лично радует, что появляются отличные инструменты для javascript-разработчиков. И уже есть из чего выбирать под свои конкретные нужды. |
Часовой пояс GMT +3, время: 16:23. |