2013-07-26 3 views
1

내 모든 매핑을 호출되지 않습니다 제대로 작동 :스프링 3.2이있다 및 근무하지만, 자바는

MvcResult mvcResult = this.mockMvc.perform(get("/company/doSomething")) 
        .andDo(print()) 
        .andExpect(status().isOk()) 
        .andReturn(); 

반환 상태를 확인이

@RequestMapping(value = "/company/doSomething", method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE) 
    @ResponseBody 
    public Boolean myMethod() { 
     return false; 
    } 

에서 내가 중단 점을 설정하는 경우 컨트롤러 메소드에서 test n 디버그 모드를 실행하면 테스트가 그냥 통과하고 (중단 점이 호출되지 않음) 응답이 인쇄됩니다. 아무 것도 반환되지 않고이 결과가 나타납니다.

MockHttpServletResponse: 
       Status = 200 
     Error message = null 
      Headers = {} 
     Content type = null 
       Body = 
     Forwarded URL = default 
     Redirected URL = null 
      Cookies = [] 
,

는 실제 요청은 클래스에 @Controller 어노테이션이 있나요이

MockHttpServletRequest: 
     HTTP Method = GET 
     Request URI = /company/doSomething 
      Parameters = {} 
      Headers = {} 

      Handler: 
       Type = org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler 
+0

더 이상 세부 사항을 제공 할 수 있습니까? 예상 결과는 무엇이며 MockHttpServletResponse 이외의 다른 결과를 제공합니까? – sparks

+2

@sparks 응답 본문에'false'를 출력해야합니다. –

+0

원시 데이터 형식을 반환하지 않을 수도 있습니다. 나는 봄이 그들을 싫어하기 전에 오류가 발생했습니다. 'public boolean myMethod()'를'public Boolean myMethod()'로 만듭니다. – sparks

답변

2

선택한 실제 핸들러 (예 : DefaultServletHttpRequestHandler)에서 주석이 달린 컨트롤러 메소드가 일치하지 않음을 알 수 있습니다. 어떻게 든 지정된 요청이 컨트롤러 메소드 요청 매핑과 일치하지 않습니다.

+0

그 대신에 404를 반환해서는 안됩니다. – NimChimpsky

2

처럼 보인다?

또한 classpath에 Jackson2 (JSON) 라이브러리가 있습니까? 내가 테스트를 귀하의 코드를 복사하여 실행하면

, 나는 올바른 응답 출력 얻을 :

MockHttpServletResponse: 
      Status = 200 
    Error message = null 
     Headers = {Content-Type=[application/json]} 
    Content type = application/json 
      Body = false 
    Forwarded URL = null 
    Redirected URL = null 
     Cookies = [] 

그러나 내 요청 출력 상태 올바른 처리기하여 출력 상태 반면

MockHttpServletRequest: 
    HTTP Method = GET 
    Request URI = /company/doSomething 
     Parameters = {} 
     Headers = {} 
     Handler: 
      Type = example.TestController 
      Method = public java.lang.Boolean example.TestController.myMethod() 

을 그 기본 DefaultServletHttpRequestHandler 핸들러가 요청을 처리하고 있습니다.