복붙노트

[SPRING] MockMvc를 통해 모든 요청에 ​​대해 서블릿 경로를 설정하는 방법

SPRING

MockMvc를 통해 모든 요청에 ​​대해 서블릿 경로를 설정하는 방법

MockMvc를 통과하는 모든 요청 (get, post, put, delete)에 대해 서블릿 경로를 설정할 수 있습니까?

Spring 디스패치 서블릿은 / rest / *에 매핑됩니다. 하지만 내 테스트에서 나는 나머지 부분을 제거해야한다. 그렇지 않으면 스프링 테스트가 컨트롤러를 인식하지 못한다.

편집하다

@Sotirios :

뭔가가 가능합니다 :

public class MyWebTests {

    private MockMvc mockMvc;

    @Before
    public void setup() {
        mockMvc = standaloneSetup(new AccountController())
            .defaultRequest(get("/")
            .contextPath("/app").servletPath("/main")
            .accept(MediaType.APPLICATION_JSON).build();

} }

하지만 모든 요청에 ​​대해 서블릿 경로를 설정할 수 있는지 궁금합니다. 위 코드는 http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/testing.html에 있습니다.

아니면 standaloneSetup으로 servletPath를 정의하는 것만 가능합니까?

해결법

  1. ==============================

    1.나는 ServletException ( "Circular view path ...")에 문제가 있었지만 MockMvc를 사용한 테스트에서는 절대로 발생하지 않았다.

    나는 ServletException ( "Circular view path ...")에 문제가 있었지만 MockMvc를 사용한 테스트에서는 절대로 발생하지 않았다.

    문제는 메소드가 @ResponseBody로 주석을 달지 않았다는 것입니다. 이 테스트는 빈 서블릿 경로가 있으므로 잘 수행되었으므로 'callPath'와 다른 'servletPath / callPath'로 viewName을 확인하여 ServletException을 던지지 않았습니다. 따라서 테스트 요청에 servletPath를 설정하여 앱 배포 방법에 더 가깝게하고 애노테이션을 잊어 버릴 경우를 대비하여 테스트를 실패하게 만들 필요가있었습니다.

    .defaultRequest(get("/").servletPath("/main")) 
    

    매력처럼 나를 위해 일했다. 그래서 질문에 대한 대답이 작동합니다.

  2. from https://stackoverflow.com/questions/21837872/how-to-set-servlet-path-for-every-request-through-mockmvc by cc-by-sa and MIT license