Как заставить WebClient HtmlUnit ускорить выполнение JavaScript, который должен запускаться window.setTimeout? - PullRequest
4 голосов
/ 11 мая 2011

Я использую библиотеку Java HtmlUnit для создания набора регрессионных тестов для веб-приложения.

У меня есть обработчик "onload", подключенный в теле страниц приложения кперенаправить на страницу тайм-аут после истечения сеанса.Обработчик представляет собой некоторый JavaScript-код вида:

window.setTimeout( function() { window.location = 'timout.html'; }, 3600000);

Я хотел бы проверить, что перенаправление в конечном итоге сработает, когда придет время, но самое близкое, что я могу найти, этона самом деле ждать всю продолжительность времени (скажем, час в приведенном выше примере), как показано в примере Java ниже:

WebClient webClient = new WebClient(); ... webClient.waitForBackgroundJavaScript( 3600000);

Я хотел бы знать, возможно ли эточтобы заставить механизм выполнения скриптов вести себя так, как будто прошло столько времени, фактически не нужно ждать минут или часов "реальное время" для запуска набора тестов.

В идеале,Можно сказать движку / клиенту / интерпретатору, что прошло X миллисекунд (чтобы эмулировать ожидание), или, возможно, установить какой-то фактор «замедления времени» и опросить страницу, чтобы увидеть, как она обновляется.

1 Ответ

1 голос
/ 11 мая 2011

Я не думаю, что вы можете сделать это легко.Единственный способ, которым я вижу это возможным, - это посмеяться над методом Rhino, который обрабатывает settimeout в ваших тестах ... Возможно, с помощью фреймворка, подобного Mockito ... Но это не то, что вы хотите, как если бы вы хотели проверить эффективностьперенаправление страницы, вы проверяете количество времени, необходимое для перенаправления

ура

grooveek

...