gpt4 book ai didi

spring-boot - 如何使用MockMVC和standaloneSetup并且没有WebApplicationContext测试Thymeleaf?

转载 作者:行者123 更新时间:2023-12-02 13:23:15 26 4
gpt4 key购买 nike

我想测试一个 Controller ,该 Controller 使用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)))
}
}

但我得到一个异常(exception):

Circular view path [post]: would dispatch back to the current handler URL [/post] again.



Controller 映射的名称与模板相同( post)。

我不想使用 WebApplicationContext或类似的东西。

最佳答案

您应该添加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
}

关于spring-boot - 如何使用MockMVC和standaloneSetup并且没有WebApplicationContext测试Thymeleaf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50887124/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com