Comments 10
Хоть обзор и короткий, но могу подтвердить что Jasmine — классная штука.
Классно то, что JS — динамический язык, и можно добавлять свои функции проверки ожиданий (matchers).
А с помощью spy мы передавали в тест функции, и проверяли что они вызывают другие функции (например, для проверки срабатывания событий).
Использовали для Windows 8 приложений для WinJS и нашли старнный баг — при отладке тестов (у нас их было около 2000), движок часто зависает. Но при запуске без отладки — всё отлично. Разбираться не стали.
Ну и если спецификация к тесту (describe) описана в стиле «как пользователь, я ожидаю» (а не «этот код делает это»), то вообще просто ориентироваться в коде приложения, когда тест проваливается.
Классно то, что JS — динамический язык, и можно добавлять свои функции проверки ожиданий (matchers).
А с помощью spy мы передавали в тест функции, и проверяли что они вызывают другие функции (например, для проверки срабатывания событий).
Использовали для Windows 8 приложений для WinJS и нашли старнный баг — при отладке тестов (у нас их было около 2000), движок часто зависает. Но при запуске без отладки — всё отлично. Разбираться не стали.
Ну и если спецификация к тесту (describe) описана в стиле «как пользователь, я ожидаю» (а не «этот код делает это»), то вообще просто ориентироваться в коде приложения, когда тест проваливается.
А как он в сравнении с Mocha?
Mocha более гибкий чем jasmine. Однако для mocha необходимо использование библиотеки утверждений (к примеру chai), что несколько сложнее в настройке и поддержке. Для jasmine есть прекрасный jasmine-jquery плагин, который упрощает тестирование JQuery и предоставляет поддержку фикстур. Думаю тут больше вопрос вкуса, так как по возможностям они сопоставимы.
Ну на счет сложности настройки библиотеки утверждений(assertion library) Вы по-моему перегибаете. Chai подключается одной строчкой(как на клиенте, так и на сервере). Кроме того тот-же Chai реализует несколько стилей assertions: assert, expect, should.
Что же касается Mocha — она реализует замечательный механизм для тестирования асинхронных методов, без использования тайм-аутов: callback done(). Все что нужно — передать done в асинхронный метод и вызвать его по окончании работы метода.
Данный подход не встречал ни у одного другого тест фреймворка для JS. Хотя данная фича на клиенте не так уж и важна, зато для ноды — самое то.
Что же касается Mocha — она реализует замечательный механизм для тестирования асинхронных методов, без использования тайм-аутов: callback done(). Все что нужно — передать done в асинхронный метод и вызвать его по окончании работы метода.
it('should save without error', function(done){
var user = new User('Luna');
user.save(function(err){
if (err) throw err;
done();
});
})
Данный подход не встречал ни у одного другого тест фреймворка для JS. Хотя данная фича на клиенте не так уж и важна, зато для ноды — самое то.
Спасибо за статью. Пользовался Jasmine для тестирования Backbone и Ember моделей.
Очень хочу пользоваться для тестирования всего приложения, но не знаю как.
Да хорошо-приятно, что есть jasmine-jquery, но хотелось бы реальный пример тестирования.
Очень хочу пользоваться для тестирования всего приложения, но не знаю как.
Да хорошо-приятно, что есть jasmine-jquery, но хотелось бы реальный пример тестирования.
Jasmine еще очень удобно использовать вместе с jsTestDriver внутри WebStorm для тестирования клиентского кода. Ничего кроме jasmine-jstd-adapter не нужно
Sign up to leave a comment.
Введение в Jasmine