Как проверить текст ссылки в 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"s assertLabel метод, но он не может разыграть Link к Label
  • С использованием Link"s getModelObject() метод возвращает исходное сообщение (т.е. перед форматированием имени пользователя в нем)
  • Добавление идентификатора к сообщению и прямой доступ к нему по пути не работает, поскольку я получаю сообщение о том, что этот путь не существует (можете ли вы даже дать идентификатор 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);
Другие вопросы по тегам