Spring boot 如何使用MockMVC和standaloneSetup测试Thymeleaf,而不使用WebApplicationContext?

Spring boot 如何使用MockMVC和standaloneSetup测试Thymeleaf,而不使用WebApplicationContext?,spring-boot,kotlin,thymeleaf,mockmvc,Spring Boot,Kotlin,Thymeleaf,Mockmvc,我想测试一个控制器,它使用Thymeleaf模板和MockMVC返回页面 这是我的测试: class PostControllerTest { ... @BeforeClass fun setUp() { MockKAnnotations.init(this) mockMvc = MockMvcBuilders.standaloneSetup(postController) .build() }

我想测试一个控制器,它使用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
或类似的东西。

您应该添加
viewsolver
来识别模板:

mockMvc = MockMvcBuilders.standaloneSetup(postController)
            .setViewResolvers(viewResolver())
            .build()
其中
viewsolver()
是:

private fun viewResolver(): InternalResourceViewResolver {
    val viewResolver = InternalResourceViewResolver()

    // configuration
    viewResolver.setPrefix("/templates/")
    viewResolver.setSuffix(".html")

    return viewResolver
}