我想测试一个控制器,它使用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
或类似的东西。
答案 0 :(得分:0)
您应该添加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
}