2015-08-28 15 views
7

Próbuję przetestować nowy projekt Spring MVC. Mam test mijania dla kontrolera domowego obsługującego index.jsp. Próbuję przetestować obsługę statycznych zasobów obsługiwanych przez ResourceHandlerRegistry w moim WebConfig.Jak testować zasoby statyczne obsługiwane przez Spring ResourceHandlerRegistry

Jakieś wskazówki, jak to zrobić poprawnie? Poniżej jest mój kod:

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

} 

Wyjście z nadrukiem():

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

Odpowiedz

0

Przy standardowej konfiguracji jak

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

jeśli wykonać GET „/ resources/css/testowy. css "zamiast" resources/css/test.css "otrzymasz z powrotem plik css. Dlaczego oczekujesz przekazania?

Powiązane problemy