Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
3 / 1 / 1
Регистрация: 12.05.2019
Сообщений: 136
1

Как подружить thymeleaf c интеграционным тестом?

18.01.2021, 21:32. Показов 2240. Ответов 4
Метки нет (Все метки)

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">
<head>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"/>
  <title th:text="${title}"> </title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<header th:insert="blocks/header :: header"></header>
 <div th:each="el : ${product}" class="allert allert-info mt-2">  
<div class="card" style="width: 18rem;" id="showCase-list">
  <div class="card-body">
    <h2 class="card-title"><p th:text="${el.name}" ></h2>
    <p class="card-text"><p th:text="${el.description}" ></p>
   <p class="card-text"><p th:text="${el.price}" ></p>
     <p><a th:href="'/product/'+${el.id}" class="btn btn-primary btn-sm">View Details </a></p><br>
  </div>
</div>
</div>
<div th:insert="blocks/footer :: footer"></div>
</body>
</html>

тестируется вот таким тестом
Java
1
2
3
4
5
6
@Test
  public void createShowcaseTest() throws Exception {
    this.mockMvc.perform(get("/showcase"))
        .andDo(print())
        .andExpect(xpath("//div[@id='showCase-list']").nodeCount(4));
  }

все проходит хорошо, но не принимает мой html
org.xml.sax.SAXParseException; lineNumber: 10; columnNumber: 14; Attribute name "xmlns:" associated with an element type "html" must be followed by the ' = ' character.
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(D OMParser.java:262)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl. parse(DocumentBuilderImpl.java:339)
at org.springframework.test.util.XpathExpectationsHelper.parseX mlByteArray(XpathExpectationsHelper.java:237)
at org.springframework.test.util.XpathExpectationsHelper.evalua teXpath(XpathExpectationsHelper.java:219)

at org.springframework.test.util.XpathExpectationsHelper.assert NodeCount(XpathExpectationsHelper.java:154)

Как это исправить подскажите пожалуйста.
Просто вставить как оно просит "=" туда не получается.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.01.2021, 21:32
Ответы с готовыми решениями:

Использование Thymeleaf. Передача свойств из Thymeleaf в БД
Всем добра. Подскажите, плиз, как правильно передать данные шаблонезатору Thymeleaf в Spring...

Аналитик/архитектор по интеграционным решениям.
Вакансия: Аналитик/архитектор по интеграционным решениям. Обязанности: • Участие в...

Требуется: Архитектор SAP по интеграционным решениям, Москва
ИТ-дирекция компании X5 Retail Group (Москва) приглашает на работу специалиста на должность:...

Как пользоваться тестом ANOVA
Добрый день! Подскажите как пользоваться сравнительным тестом ANOVA в MATLAB. У меня есть...

4
Эксперт Java
3044 / 2541 / 782
Регистрация: 05.07.2013
Сообщений: 12,295
19.01.2021, 04:51 2
Насколько я понимаю в результирующем html не должно быть никакого thymeleaf
0
3 / 1 / 1
Регистрация: 12.05.2019
Сообщений: 136
19.01.2021, 09:26  [ТС] 3
мысль интересна...

а как это на практике реализовать?
В тесте я указываю адрес this.mockMvc.perform(get("/showcase"))
и по этому адресу оно таки находит html c thymeleaf
0
Эксперт Java
3044 / 2541 / 782
Регистрация: 05.07.2013
Сообщений: 12,295
19.01.2021, 10:14 4
Лучший ответ Сообщение было отмечено Sma6nta как решение

Решение

подозреваю, что mockmvc надо настроить на использование нужного viewResolverа (вероятно ThymeleafViewResolver). Но тут надо rtfm, я хз как оно настраивается

Добавлено через 1 минуту
https://docs.spring.io/spring-... ilder.html
1
3 / 1 / 1
Регистрация: 12.05.2019
Сообщений: 136
19.01.2021, 12:31  [ТС] 5
Спасибо)) Заррррработало!)))

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.xpath;
import org.junit.runner.RunWith;
import org.mockito.MockitoAnnotations;
import org.junit.Before;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
 
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@TestPropertySource("/applicationTest.properties")
@Sql(value = { "/createShowCase-Sql-before.sql" }, executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD)
@Sql(value = { "/createShowCase-Sql-after.sql" }, executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD)
public class ProductControllerTest {
    @Autowired
    private WebApplicationContext wac;
 
    @Autowired
    private MockMvc mockMvc;
 
    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
        this.mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
    }
 
    @Test
    public void createShowcaseTest() throws Exception {
        this.mockMvc.perform(get("/showcase")).andDo(print())
                .andExpect(xpath("//div[@id='showCase-list']").nodeCount(4));
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2021, 12:31

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Как вставить картинку между тестом???
Всем привет! Подскажите пожалуйста как вставить картинку между текстом, чтобы при этом текст не...

Как не хардкодить пути до ресурсов в thymeleaf?
Прохожу видеокурс по спрингу. Используется thymeleaf. Препод тут захардкодил часть пути в ссылке...

Как получить Thymeleaf attr в jquery
добрый день есть такая строчка кода: &lt;input type=&quot;submit&quot; style=&quot;width: 60px&quot;...

Thymeleaf - подскажите пожалуйста как передать дату
Всем привет! Через input нужно в объект передать дату, но как я понял напрямую не получается -...

Как данный код на freemaker будет выглядеть в thymeleaf?
Товарищи, доброго времени суток. Помогите, пожалуйста, разобраться. Есть небольшой кусочек кода...

Spring + Thymeleaf. Как создать зависимые выпадающие списки
Я новичок и бьюсь уже две недели. Нужно создать выпадающие списки, например от выбора страны во...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.