Имитировать кнопку «Назад/вперед/обновить» в модульном тесте с помощью Wicket
-
23-09-2019 - |
Вопрос
Я хотел бы провести модульное тестирование (jUnit 4) поведения моих страниц при нажатии кнопки «Назад» браузера (или «Вперед», или «Обновить»).
Могу ли я каким-то образом имитировать кнопки браузера «Назад/Вперед/Обновить» в модульном тесте?Есть ли служебный класс, обеспечивающий такую функциональность?
2-е редактирование:
Я понимаю, что средства тестирования Wicket не моделируют браузер с полной историей.Насколько я понимаю, мне потребуются следующие две вещи, чтобы имитировать поведение браузера из модульного теста:
(1) Wicket должен сообщить мне, какой именно запрос (например,URL) создается, когда я звоню WicketTester.startPage()
или WicketTester.clickLink()
.
(2) Wicket должен снова обработать тот же запрос, например.приняв URL-адрес, ранее записанный (1).
Я хочу сделать это способом, совместимым с WicketTester
, FormTester
и так далее, поскольку я использую средства поиска компонентов, утверждения и другие полезные функции в этих классах.Это означает, что мне нужно отправлять запросы от объектов Wicket, а не от внешних клиентов, таких как HttpUnit/HtmlUnit/Selenium.
Решение
Вы не можете имитировать функциональность «назад» в модульных тестах калитки, это полностью выходит за рамки того, что делает калитка, однако вы можете протестировать практически все, что произойдет, когда вы нажмете «Назад».
напишите что-нибудь более конкретное о том, что вы пытаетесь протестировать, обычно кнопка «Назад» просто дает вам кучу «отдельных» компонентов в калитке, и вы можете их протестировать
Другие советы
Это определенно не поддерживается WicketTester, который явно использует фиктивное веб-приложение, не поддерживающее кнопку «Назад» для экономии ресурсов.
Я подозреваю, что было бы больно моделировать в Wicket...
Лучше всего использовать инструмент тестирования на основе браузера, например Селен RC.Я сам не пробовал, но в нем есть goBack()
метод, который имитирует нажатие кнопки возврата браузера.
Проверить ХтмлЮнит, вы можете имитировать события вперед и назад, используя История сорт.
@Test
public void testHistory() throws IOException {
// Create a web client
final WebClient webClient = new WebClient();
// Surf to a page
final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net/");
// Click "Get started" link
page.getAnchorByHref("gettingStarted.html").click();
// Get History
History history = webClient.getCurrentWindow().getHistory();
// Current page
assertEquals("http://htmlunit.sourceforge.net/gettingStarted.html",
history.getUrl(history.getIndex()).toString());
// Go back one page
history.back();
assertEquals("http://htmlunit.sourceforge.net/",
history.getUrl(history.getIndex()).toString());
}