2016-10-05 5 views
2

일부 URL에 대해 특정 http 메소드 만 사용할 수 있는지 확인해야합니다. 가 예를 들어, I JUnit을 사용하는 제어기를 시험이Spring MVC에서 컨트롤러 메소드에 사용할 수있는 특정 http 요청 메소드 만 테스트하는 방법은 무엇입니까?

@Controller 
public class FooController { 
    @RequestMapping(value = "bar", method = RequestMethod.GET) 
    public void bar() {/*do something*/}; 
    ... 
} 

(4.10)와 같은 컨트롤러 스프링 테스트 (3.2.10) 및 EasyMock에 (3.1). 나는이

@Test 
public void testBar() throws Exception { 
    mockMvc.perform(post("bar").session(session)) 
    .andExpect(/*some application's default error response*/); 
} 

같은 테스트를 작성하는 경우가 전달합니다 (테스트 후 메소드를 호출하지만, 얻을-방법은 아닙니다).

그래서 적절한 방법을 찾고 있습니다. 나머지 리소스는 문서에 지정된 요청 방법으로 만 사용할 수 있습니다.

  • 쓰기 잘못된 요청 방법과 시험과 어떻게 든 자원을 확인
  • 이 org.springframework.web.HttpRequestMethodNotSupportedException 처리하기 위해 사용자 정의 예외 리졸버를 추가 사용할 수 없습니다 : 요청 방법을 '__'지원되지 않는 두 솔루션은 내 마음에 와서 동일한 응용 프로그램 기본 오류 응답을 반환하지만 https 상태 405 메서드는 허용되지 않습니다.

컨트롤러 테스트 요청 방법을 어떻게 확인하고 제안 하시겠습니까?

미리 감사드립니다.

예 :

답변

3

당신은 당신은 status().isMethodNotAllowed() 또는 status().isNotFound()andExpect를 사용 할 수있는 모든 요청 메소드의 상태를 확인해야합니다 귀하의 요구에 따라

  • 수 : mockMvc.perform(get("bar").andExpect(status().isNotFound()) 또는 mockMvc.perform(get("bar").andExpect(status().isMethodNotAllowed())

put, delete, ....