Spring boot 如何使用MockMVC和standaloneSetup测试Thymeleaf,而不使用WebApplicationContext?
我想测试一个控制器,它使用Thymeleaf模板和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() }
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
}