gpt4 book ai didi

java - spring Controller 在 Controller 测试中找不到模板

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

我正在使用 spring-boot-starter-web、spring-boot-starter-test 和 spring-boot-starter-groovy-templates (1.2.0.M1)。

我正在尝试使用 Spring Boot 构建一个小型应用程序。我用mockito 为mvc Controller 编写了测试。如果我使用 Maven 运行这些测试,每个 Controller 测试都会出现以下错误:

Servlet Could not resolve view with name 'persons/list'

我不确定我是否配置错误。

测试用例中的错误消失:

  • 如果我将 spring-boot-starter-parent 的版本更改为 1.1.7.RELEASE
  • 如果我使用组件扫描并将服务 bean 初始化为完整 bean

我设置了一个示例项目,在该项目上发生了与我的应用程序中相同的错误: https://github.com/waldemar-schneider/spring-boot-mvc-test

我错过了什么?提前致谢

最佳答案

您尚未在 PersonControllerTest 使用的配置中启用自动配置,这意味着 Spring Boot 不会对其 Groovy 模板支持进行自动配置。要解决此问题,请将 @EnableAutoConfiguration 添加到 ControllerTestConfig

它也不能真正与 1.1.7.RELEASE 一起工作,但它以您的测试未识别的不同方式失败。

如果您更新测试以同时调用 MockMvcResultHandlers.print():

mockMvc.perform(get("/persons/"));
.andDo(print())
.andExpect(status().isOk())
.andExpect(view().name("persons/list"))
.andExpect(model().attribute("persons", hasSize(1)));

您将在输出中看到响应的正文为空:


MockHttpServletResponse:
Status = 200
Error message = null
Headers = {Content-Type=[text/html;charset=UTF-8]}
Content type = text/html;charset=UTF-8
Body =
Forwarded URL = null
Redirected URL = null
Cookies = []

如果您按照上述方式添加 @EnableAutoConfiguration,则响应将包含预期的 HTML:


MockHttpServletResponse:
Status = 200
Error message = null
Headers = {Content-Type=[text/html;charset=UTF-8]}
Content type = text/html;charset=UTF-8
Body = <!DOCTYPE html><html class='no-js' lang='en'><head></head><body><h2>Person list</h2><table><thead><tr><th>Name</th><th>Surname</th></tr></thead><tr><td/><td/></tr></table></body></html>
Forwarded URL = null
Redirected URL = null
Cookies = []

关于java - spring Controller 在 Controller 测试中找不到模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26206988/

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