Как проверить текст ссылки в Wicket
Я пытаюсь реализовать ссылку с динамическим текстом в 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
"sassertLabel
метод, но он не может разыгратьLink
кLabel
- С использованием
Link
"sgetModelObject()
метод возвращает исходное сообщение (т.е. перед форматированием имени пользователя в нем) - Добавление идентификатора к сообщению и прямой доступ к нему по пути не работает, поскольку я получаю сообщение о том, что этот путь не существует (можете ли вы даже дать идентификатор
wicket:message
стихия?)
Какие-нибудь мысли?
1 ответ
Решение
Как насчет
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);