我正在尝试对一个新的
Spring MVC项目进行单元测试.我有一个服务于index.jsp的家庭控制器的通过测试.我正在尝试在WebConfig中测试由ResourceHandlerRegistry提供的静态资源.
@RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration(classes = {WebConfig.class}) public class HomeControllerTest { private MockMvc mockMvc; @Autowired private WebApplicationContext webApplicationContext; @Before public void setUp() throws Exception { mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext) .build(); } @Test public void testGetHomepage() throws Exception { //passing :) this.mockMvc.perform(get("/")) .andExpect(status().isOk()) .andExpect(view().name("index")) .andExpect(forwardedUrl("/WEB-INF/pages/index.jsp")); } @Test public void testGetResources() throws Exception { // TEST FAILS :( with 404 this.mockMvc.perform(get("resources/css/test.css")) .andDo(print()) .andExpect(status().isOk()) .andExpect(forwardedUrl("/resources/css/test.css")); } }
print()的输出:
2015-08-28 12:53:09 WARN PageNotFound:1136 - No mapping found for HTTP request with URI [resources/css/test.css] in DispatcherServlet with name '' MockHttpServletRequest: HTTP Method = GET Request URI = resources/css/test.css Parameters = {} Headers = {} Handler: Type = null Async: Async started = false Async result = null Resolved Exception: Type = null ModelAndView: View name = null View = null Model = null FlashMap: MockHttpServletResponse: Status = 404 Error message = null Headers = {} Content type = null Body = Forwarded URL = null Redirected URL = null Cookies = []
解决方法
使用标准配置
<mvc:resources mapping="/resources/**" location="/resources/"/>
如果你执行get“/resources/css/test.css”而不是“resources / css / test.css”,你将获得css文件.你为什么期待前锋?