1

我正在尝试在 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'assertLabel方法,但不能LinkLabel
  • 使用Link'getModelObject()方法返回原始消息(即在格式化用户名之前)
  • 向消息添加 id 并直接通过路径访问它不起作用,因为我收到这条路径不存在的消息(你甚至可以给wicket:message元素一个 ID 吗?)

有什么想法吗 ?

4

1 回答 1

4

怎么样

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

TagTester link = WicketTester.getTagByWicketId("someLink");
assertNotNull(link);
String linkText = link.getValue();
asserEquals("Username is: " + username, linkText);
于 2014-07-21T07:20:00.440 回答