2015-08-28 7 views
7

Ich versuche Unit-Test ein neues Spring MVC-Projekt. Ich habe einen bestandenen Test für den Heimcontroller, der index.jsp bedient. Ich versuche, statische Ressourcen zu testen, die von ResourceHandlerRegistry in meiner WebConfig bereitgestellt werden.So testen Sie Unit Statische Ressourcen getestet von Spring ResourceHandlerRegistry

Irgendwelche Tipps, wie man das richtig macht? Unten ist mein Code:

@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")); 
} 

} 

Ausgabe von 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 = [] 

Antwort

0

Mit einer Standardkonfiguration wie

<mvc:resources mapping="/resources/**" location="/resources/"/> 

, wenn Sie einen get „/ resources/css/Test durchführen. css "statt" resources/css/test.css "erhalten Sie die CSS-Datei zurück. Warum erwartest du einen Forward?

Verwandte Themen