当前位置: 首页 > 知识库问答 >
问题:

Spring Boot、MockMVC和MessageSource

闻法
2023-03-14

这里有一个非常基本的spring boot项目,只有6个类。

https://github.com/paranoiabla/spring-boot-mockmvc

设置非常基本,只有一个测试用例失败了。我得到的例外是

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.context.NoSuchMessageException: No message found under code 'custom.link' for locale 'en'.
at org.springframework.context.support.AbstractMessageSource.getMessage(AbstractMessageSource.java:159)
at org.test.MyController.home(MyController.java:29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:177)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
at org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:65)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)

我相信这是因为SpringApplication ationContextLoaderline255,方法addMockServletContext通过调用仅接受路径的构造函数创建了MockServletContext。作为MockServletContext内部的结果,ResourceLoader使用DefaultResourceLoader初始化,它将在类路径中查找资源。这样,如果我有一个ReloadableResourceMessageResolver并且我的属性文件在/WEB-INF/消息/base.properties中,它将永远找不到它们,因为/WEB-INF/消息/base.properties被转换为src/main/webapp/WEB-INF/消息/base.propertiesReloadableMessageSourceResolver在类路径中找不到。我认为在创建MockServletContext时应该能够显式传递FileSystemResourceLoader,对吗?

共有1个答案

严高峻
2023-03-14

我猜WEN-INF应该是WEB-INF

虽然我没有检查,但它解决了你的问题。

 类似资料:
  • 问题内容: 我编写了一个测试UsersController的单元测试。UsersControllerTest.findUser工作正常,但不能正常运行UsersControllerTest.insertGetModifyDelete。 在测试日志中,我可以看到POST请求与UsersController的任何方法都不匹配,但是我不明白为什么。您能帮我这个吗? 这是我其余的Java类: 我有2种方法

  • 共享Api实现类,添加preauthorize-admin,查看所有用户 这是我的JUnit测试,我发送get请求并返回403错误。

  • http://docs.spring.io/spring-security/site/docs/4.0.x/reference/htmlsingle/#test-mockMVC 测试: 当我运行JUnit测试时,我会得到以下失败跟踪

  • 当我只保留一个主键--无论是CFO_ID还是LAST_UPDATE_DTS,并完全删除Idclass时,它工作得非常好。这让我认为idclass有问题,但我找不到任何问题。有人能帮忙吗?

  • 我已成功将图像文件上载到。但是我在使用MockMvc测试时遇到了一个问题。当我运行测试用例时,我发现异常文件未找到,访问被拒绝。 控制器看起来像这样: 我的测试用例如下所示: 我的jsp文件如下所示:

  • 我正在使用spring MockMVC测试spring rest控制器。我能够执行模拟http请求并验证响应。我的设置自动连接WebApplicationContext: 为了告诉MockMVC要初始化哪些控制器并将其添加到上下文中,我有一个内部配置类: 这就像一种魅力。MockMVC启动了一个容器,其中包含加载MyRestController的上下文,并为MyRestController映射的U