Как заставить WebClient HtmlUnit ускорить выполнение javascript для запуска window.setTimeout?

#javascript #java #junit #dom-events #htmlunit

#javascript #java #junit #dom-события #htmlunit

Вопрос:

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

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

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

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

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

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

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

Ответ №1:

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

приветствия

grooveek

Комментарии:

1. Я думаю, то, что мне не нравится ваш ответ, не означает, что это неправда. Точка!