我试图对一个新的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 = []
答案 0 :(得分:0)
使用标准配置,如
<mvc:resources mapping="/resources/**" location="/resources/"/>
如果你执行get&#34; /resources/css/test.css"而不是&#34; resources / css / test.css&#34;你会收到css文件。你为什么期待前锋?