How to test Thymeleaf with MockMVC and standaloneSetup and no WebApplicationContext?
Я хочу протестировать контроллер, который возвращает страницу, используя шаблон Thymeleaf, с MockMVC
,
Это мой тест:
class PostControllerTest {
...
@BeforeClass
fun setUp() {
MockKAnnotations.init(this)
mockMvc = MockMvcBuilders.standaloneSetup(postController)
.build()
}
@Test
fun testGetFirstPost() {
every { postRepository.find(1) } returns post
mockMvc.perform(get("/post/1"))
.andExpect(status().`is`(200))
.andExpect(model().attribute("post", equalTo(post)))
}
}
Но я получаю исключение:
Путь к циклическому представлению [post]: снова отправит обратно на текущий URL обработчика [/post].
Имя сопоставления контроллера и шаблон совпадают (post
).
Я не хочу использовать WebApplicationContext
или что-то вроде этого.
1 ответ
Решение
Вы должны добавить ViewResolver
распознать шаблон:
mockMvc = MockMvcBuilders.standaloneSetup(postController)
.setViewResolvers(viewResolver())
.build()
куда viewResolver()
является:
private fun viewResolver(): InternalResourceViewResolver {
val viewResolver = InternalResourceViewResolver()
// configuration
viewResolver.setPrefix("/templates/")
viewResolver.setSuffix(".html")
return viewResolver
}