TestController:
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping(method = GET)
public void test(Model model) {
}
}
JunitTest:
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*;
import org.junit.Test;
import org.springframework.test.web.servlet.MockMvc;
public class Test2 {
@Test
public void testPage() throws Exception {
TestController controller = new TestController();
MockMvc mockMvc = standaloneSetup(controller).build();//.setSingleView(new InternalResourceView("/WEB-INF/views/test.jsp"))
mockMvc.perform(get("/test"))
.andExpect(view().name("test"));
}
}
Run the JunitTest,there is a exception:
javax.servlet.ServletException: Circular view path [test]: would dispatch back to the current handler URL [/test] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)
I know I can use setSingleView,but I check the api of StandaloneMockMvcBuilder
public StandaloneMockMvcBuilder setViewResolvers(ViewResolver... resolvers)
Set up view resolution with the given ViewResolvers. If not set, an InternalResourceViewResolver is used by default.
It means InternalResourceViewResolver is used,so servlet will dispatch to "test.jsp" but not "/test",it should not be a circle,and it works well when I test in browser.Or StandaloneMockMvcBuilder doesn`t use any view resolver?