如何在Wicket中测试链接的文本

时间:2014-07-20 05:37:44

标签: java unit-testing tdd wicket wicket-tester

我试图在Wicket中使用动态文本实现链接,用户名作为文本。我的第一个想法是在标记中做这样的事情:

<a wicket:id="somelink"><wicket:message key="some.key">bla bla</wicket:message></a>

属性文件如下所示:

some.key=Username is: {0}

代码:

String username = ...
add(new Link("somelink", new StringResourceModel("some.key", this, null, username)) {
    ...
});

问题是我不知道如何测试链接的文本是否被设置为用户名(在单元测试中)。
我试过了:

  • 使用WicketTester&#39; assertLabel方法,但无法将Link转换为Label
  • 使用Link&#39; getModelObject()方法返回原始邮件(即在将用户名格式化之前)
  • 在邮件中添加ID并直接通过路径访问它是不行的,因为我收到的信息是这条路径不存在(你甚至可以给{{1}提供一个ID元素?)

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

怎么样

WicketTester.getTagById(java.lang.String)WicketTester.getTagByWicketId(java.lang.String)?这些返回TagTester对象,TagTester.getValue()返回此标记的值。这包括open标记和close标记之间的所有数据作为String。然后你可以在结果字符串上使用assertEquals并期望......

TagTester link = WicketTester.getTagByWicketId("someLink");
assertNotNull(link);
String linkText = link.getValue();
asserEquals("Username is: " + username, linkText);