Simuler arrière / avant / bouton de rafraîchissement dans le test unitaire avec Wicket
-
23-09-2019 - |
Question
Je voudrais test unitaire (JUnit 4) le comportement de mes pages lorsque le bouton retour du navigateur (ou vers l'avant ou rafraîchir) est cliqué.
Puis-je simuler en quelque sorte de retour / boutons avant / de rafraîchissement du navigateur pour un test unitaire? Y at-il une classe utilitaire qui fournit une telle fonctionnalité?
2ème édition:
Je comprends que les installations d'essai de Wicket ne simulent pas un navigateur avec un historique complet. De ma compréhension, je besoin des deux choses suivantes pour simuler le comportement d'un navigateur à partir d'un test unitaire:
(1) Wicket doit me dire ce que demande exacte (par exemple l'URL) est faite quand je l'appelle WicketTester.startPage()
ou WicketTester.clickLink()
.
(2) Portillon doit traiter à nouveau la même requête, par exemple, en acceptant l'URL enregistrée précédemment par (1).
Je veux faire cela d'une manière qui est compatible avec WicketTester
, FormTester
et ainsi de suite que j'utilise les détecteurs de composants, affirme, et plus belle fonctionnalité dans ces classes. Cela signifie que je dois émettre les demandes des installations de Wicket et non pas des clients externes comme HTTPUnit / HtmlUnit / Sélénium.
La solution
Vous ne pouvez pas simuler la fonctionnalité « retour » dans les tests unitaires de portillon incorporé, il est complètement hors de la portée de ce fait wicket, vous pouvez cependant tester presque tout ce qui va se passer lorsque vous cliquez sur retour
poster quelque chose de plus précis sur ce que vous essayez de tester, généralement un bouton de retour sera juste vous donner un tas de composants « détachés » à guichet, et vous pouvez tester les
Autres conseils
Ceci est très certainement pas pris en charge par WicketTester, qui utilise explicitement une WebApplication factice ne supportant pas le bouton de retour pour économiser les ressources.
Je pense que ce serait douloureux de simuler Wicket ...
Votre meilleur pari pourrait être d'utiliser un outil de test basé sur un navigateur comme Selenium RC . Je ne l'ai pas essayé moi-même, mais il a une méthode goBack()
qui simulera un clic sur le bouton de retour du navigateur.
Consultez HtmlUnit , vous pouvez imiter en arrière et en avant les événements en utilisant la balise la classe d'histoire.
@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());
}