Юнит-тесты это то, на что никогда нет времени. А если есть время, то нет желания. И наконец, если есть время и желание, то обязательно найдется какой-нибудь засранец, который найдет, как забрать твое время и отобьет всякое желание что-либо делать вообще… Да, заказчику тяжело объяснить что такое юнит-тесты и зачем они нужны. Но тем не менее, хочу сделать небольшой обзор нового плагина для Firefox, который позволяет юнит-тестить ваш джаваскрипт. Если быть совсем точным, то это расширение для Firebug – излюбленного инструмента javascript-разработчиков.
Итак, те кто не владеет теорией юнит-тестирования идут учить матчасть, а с остальными мы рассмотрим простейшие юнит тесты:
После запуска теста, получаем следующие результаты:
Довольно полезной оказалась фича эмулирования событий браузера:
Теперь нет необходимости, сломя голову носится по странице и кликать на все, что кликается или кликалось раньше…
Еще одно удобство, которое не может не тронуть сердце программиста – это разбиение тестов на файлы и запуск тестов батчем(скопом – по русски):
И вот результат:
Правда надо сказать о некоторых недороботках в этом плагине. При запуске нескольких тестов из разных файлов, необходимо чтобы эти файлы находились в той же директории, что и файл исполняющий batch-тест. Для запуска тестов у вас должен быть локально развернут Http-сервер. Если вам предыдущее предложение ни о чем не сказало, то смените профессию попробуйте добавить fireunit.forceHttp(), чтобы удостовериться в готовности вашего сервера обработать http-запросы.
В целом FireUnit довольно удобная в джаваскрипте штука. Пользуйтесь на здоровье.
Полезные ссылки
Примеры использования FireUnit
Блог разработчика
Скачать FireUnit
Итак, те кто не владеет теорией юнит-тестирования идут учить матчасть, а с остальными мы рассмотрим простейшие юнит тесты:
// Простой true/false юнит-тест
fireunit.ok( true, "Тест пройдет успешно!" );
fireunit.ok( false, "Тест будет провален!" );
// Сравниваем две строки и показываем разницу
// если строки отличаются между собой
fireunit.compare(
"Ленивый программист чистит зубной щеткой унитаз.",
"Ленивый программист уронил зубную щетку в унитаз",
"Это одинаковые строки?"
);
// Сравниваем две строки, используя регулярные выражения
fireunit.reCompare(
/Ленивый программист .* унитаз./,
"Ленивый программист уронил зубную щетку в унитаз.",
"Сравниваем две строки, используя регулярные выражения."
);
// Отображаем результаты тестов
fireunit.testDone();
После запуска теста, получаем следующие результаты:
Довольно полезной оказалась фича эмулирования событий браузера:
// FireUnit позволяет эмулировать события браузера
var input = document.getElementsByTagName("input")[0];
fireunit.mouseDown( input );
fireunit.click( input );
fireunit.focus( input );
fireunit.key( input, "a" );
Теперь нет необходимости, сломя голову носится по странице и кликать на все, что кликается или кликалось раньше…
Еще одно удобство, которое не может не тронуть сердце программиста – это разбиение тестов на файлы и запуск тестов батчем(скопом – по русски):
// Запускаем все тесты, расположенные в двух разных файлах
fireunit.runTests("test2.html", "test3.html");
// Эту строку надо положить в конце каждого файла, чтобы тесты
// в следующем файле запустились. Тесты запускаются последовательно.
fireunit.testDone();
И вот результат:
Правда надо сказать о некоторых недороботках в этом плагине. При запуске нескольких тестов из разных файлов, необходимо чтобы эти файлы находились в той же директории, что и файл исполняющий batch-тест. Для запуска тестов у вас должен быть локально развернут Http-сервер. Если вам предыдущее предложение ни о чем не сказало, то смените профессию попробуйте добавить fireunit.forceHttp(), чтобы удостовериться в готовности вашего сервера обработать http-запросы.
if (fireunit.forceHttp())
{
fireunit.runTests(
"example1.html",
"example2.html"
);
}
В целом FireUnit довольно удобная в джаваскрипте штука. Пользуйтесь на здоровье.
Полезные ссылки
Примеры использования FireUnit
Блог разработчика
Скачать FireUnit