Пример асинхронного теста, выполняемого в броузере

Особую ценность практически любого набора тестов для веб-приложений представляет возможность проверить наступление асинхронных событий, таких как завершение воспроизведения анимационных эффектов, получение ответа от сервера и т. д. В примере 16.4 демонстрируется, как с помощью платформы DOH можно создать асинхронный тест. Основу теста составляет применение объекта doh.Deferred (практически идентичен объекту dojo.Deferred, но имеет некоторые особенности), реализованного внутри платформы DOH и не имеющего внешних зависимостей. Если вам потребуется быстро вспомнить, что такое объекты Deferred, вернитесь к главе 4, где они рассматриваются достаточно подробно.

Прежде чем перейти к рассмотрению фактического программного ко да, ознакомьтесь с типичным шаблоном проведения асинхронного тестирования:
• Создать объект doh.Deferred, который будет использоваться для проверки результатов асинхронной функции (которая возвращает объект dojo.Defeкred)
• Вызвать асинхронную функцию, возвращающую объект dojo.Deferred, и сохранить ссылку на него в переменной
• Добавить функции обратного вызова и обработки ошибок в объект dojo.Deferred, которые просто передают результаты асинхронной функции собственным функциям обратного вызова и обработки ошибок объекта doh.Deferred

Пример 16.4.


Шаблон асинхронного теста
doh.register("foo", [
function( ) {
var dohDfd = new doh.Deferred();
var expectedResult = "baz";
var dojoDfd = asynchronousBarFunction();
dojoDfd.addBoth(function(response, io) {
//используется ссылка на объект dohDfd...
if (response == expectedResult) {
dohDfd.callback(true);
}
else {
dohDfd.errback(new Error( /* ... */));
}
});
//...и обратно возвращается объект dohDfd
return dohDfd;
}
]);

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

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Dojo на эту тему:
Вопросы производительности
Запуск сборки
Настройка профиля
Настройка профиля (более грамотный вариант)
Платформа тестирования Dojo (DOH)