Как проверить, имеет ли с заданным атрибутом id заданную ссылку, используя MockMvc, .andExpect() и xpath?

#spring #xpath #matcher #mockmvc

#spring #xpath #сопоставитель #mockmvc

Вопрос:

Я не очень знаком с тестированием представления с помощью MockMvc, и я изо всех сил пытаюсь найти соответствующий материал в Интернете. Если вы знаете какие-либо хорошие руководства, пожалуйста, поделитесь здесь, я буду очень благодарен.

Допустим, страница имеет:

 <div id='foo'>
    <p>Some text</p>
    <a href="path"></a>
</div>
  

Как я могу проверить, имеет ли элемент div с идентификатором ‘foo’ элемент с href=»path»?

Моя неудачная попытка:

 @Test
public void testPage() {
    mockMvc.perform(
        get("/page"))
        .andExpect(xpath("//div[@id='foo']//a[contains(@href,'/path')]"));
}
  

У меня это не работает, так как я получаю сообщение об ошибке в .andExpect() — «Приведите аргумент 1 к ResultMatcher»

Пожалуйста, кто-нибудь может сообщить мне, как это проверить?

Комментарии:

1. Опубликуйте полный минимальный пример (от строки 0 до последней строки), воспроизводящий ошибку компиляции, и опубликуйте точное и завершенное сообщение об ошибке от компилятора.

Ответ №1:

Это правильный способ проверить, имеет ли div с заданным атрибутом id заданную ссылку (я пропустил .exists() ):

   mockMvc.perform(
            get("/page"))
            .andExpect(
                    xpath("//div[@id='foo']//a[contains(@href,'/path')]")
                    .exists());