Pull to refresh

FireUnit: Javascript Unit Testing Extension

Reading time2 min
Views676
Юнит-тесты это то, на что никогда нет времени. А если есть время, то нет желания. И наконец, если есть время и желание, то обязательно найдется какой-нибудь засранец, который найдет, как забрать твое время и отобьет всякое желание что-либо делать вообще… Да, заказчику тяжело объяснить что такое юнит-тесты и зачем они нужны. Но тем не менее, хочу сделать небольшой обзор нового плагина для Firefox, который позволяет юнит-тестить ваш джаваскрипт. Если быть совсем точным, то это расширение для Firebug – излюбленного инструмента javascript-разработчиков.
Итак, те кто не владеет теорией юнит-тестирования идут учить матчасть, а с остальными мы рассмотрим простейшие юнит тесты:

// Простой true/false юнит-тест
fireunit.ok( true, "Тест пройдет успешно!" );
fireunit.ok( false, "Тест будет провален!" );
// Сравниваем две строки и показываем разницу
// если строки отличаются между собой
fireunit.compare(
"Ленивый программист чистит зубной щеткой унитаз.",
"Ленивый программист уронил зубную щетку в унитаз",
"Это одинаковые строки?"
);
// Сравниваем две строки, используя регулярные выражения
fireunit.reCompare(
/Ленивый программист .* унитаз./,
"Ленивый программист уронил зубную щетку в унитаз.",
"Сравниваем две строки, используя регулярные выражения."
);
// Отображаем результаты тестов
fireunit.testDone();


После запуска теста, получаем следующие результаты:

image

Довольно полезной оказалась фича эмулирования событий браузера:

// 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();


И вот результат:

image

Правда надо сказать о некоторых недороботках в этом плагине. При запуске нескольких тестов из разных файлов, необходимо чтобы эти файлы находились в той же директории, что и файл исполняющий batch-тест. Для запуска тестов у вас должен быть локально развернут Http-сервер. Если вам предыдущее предложение ни о чем не сказало, то смените профессию попробуйте добавить fireunit.forceHttp(), чтобы удостовериться в готовности вашего сервера обработать http-запросы.

if (fireunit.forceHttp())
{
fireunit.runTests(
"example1.html",
"example2.html"
);
}


В целом FireUnit довольно удобная в джаваскрипте штука. Пользуйтесь на здоровье.

Полезные ссылки

Примеры использования FireUnit

Блог разработчика

Скачать FireUnit
Tags:
Hubs:
Total votes 23: ↑19 and ↓4+15
Comments5

Articles