我想在单击浏览器的后退按钮(或转发或刷新)时对我的页面的行为进行单元测试(jUnit 4)。
我可以在单元测试中以某种方式模拟浏览器的后退/前进/刷新按钮吗? 是否有提供此类功能的实用程序类?
第二次编辑:
据我所知,Wicket测试工具不会模拟具有完整历史记录的浏览器。根据我的理解,我需要以下两件事来模拟浏览器在单元测试中的行为:
(1)当我致电WicketTester.startPage()
或WicketTester.clickLink()
时,Wicket必须告诉我确切的请求(例如网址)。
(2)Wicket必须再次处理相同的请求,例如通过接受先前由(1)记录的URL。
我希望以与WicketTester
,FormTester
等兼容的方式执行此操作,因为我在这些类中使用了组件查找器,断言和更好的功能。这意味着我必须从Wicket设施发出请求,而不是从HttpUnit / HtmlUnit / Selenium等外部客户端发出请求。
答案 0 :(得分:1)
WicketTester当然不支持这一点,它明确使用虚拟WebApplication不支持后退按钮来节省资源。
我怀疑在Wicket中模拟会很痛苦......
您最好的选择可能是使用基于浏览器的测试工具,例如Selenium RC。我自己没有尝试过,但它有一个goBack()
方法,可以模拟浏览器后退按钮上的点击。
答案 1 :(得分:1)
结帐HtmlUnit,您可以使用History课程模仿后退和转发事件。
@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());
}
答案 2 :(得分:0)
你无法在wicket单元测试中模拟“后退”功能,它完全超出了wicket所做的范围,但是你可以测试几乎任何在你点击后发生的事情
发布一些更具体的关于你要测试的内容,通常一个后退按钮会在wicket中给你一堆“独立”组件,你可以测试那些