Имитировать кнопку «Назад/вперед/обновить» в модульном тесте с помощью Wicket

StackOverflow https://stackoverflow.com/questions/2343914

  •  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());
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top