Тест Spring MockMvc: No mapping found for HTTP request with URI
Есть простейший контроллер:
@GetMapping(value = "/ping", produces = "text/plain")
@ResponseBody
public String getPong(HttpServletRequest httpServletRequest) {
return "pong";
}
С ним все в порядке, он исправно работает. Для него написан не менее простой юнит-тест:
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration({"classpath:configuration/test-healthcheck-context.xml"})
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
public class PingTest {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Before
public void before() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).dispatchOptions(true).build();
}
@Test
public void pingTest () throws Exception {
MvcResult mvcResult = this.mockMvc.perform(MockMvcRequestBuilders.get("/ping").accept(MediaType.ALL)).andReturn();
String response = mvcResult.getResponse().getContentAsString();
Assert.assertEquals(response, "pong");
}
}
Контекст поднимается без ошибок, но тест не проходит, а в консоли выводится следующее:
2020-04-15 12:02:04.189 [INFO ] [o.s.t.web.servlet.TestDispatcherServlet ] [T:main ] - FrameworkServlet '': initialization completed in 671 ms
2020-04-15 12:02:04.189 [DEBUG] [o.s.t.web.servlet.TestDispatcherServlet ] [T:main ] - Servlet '' configured successfully
2020-04-15 12:02:04.230 [DEBUG] [o.s.t.web.servlet.TestDispatcherServlet ] [T:main ] - DispatcherServlet with name '' processing GET request for [/ping]
2020-04-15 12:02:04.232 [DEBUG] [s.w.s.m.m.a.RequestMappingHandlerMapping] [T:main ] - Looking up handler method for path /ping
2020-04-15 12:02:04.233 [DEBUG] [s.w.s.m.m.a.RequestMappingHandlerMapping] [T:main ] - Did not find handler method for [/ping]
2020-04-15 12:02:04.233 [WARN ] [o.s.web.servlet.PageNotFound ] [T:main ] - No mapping found for HTTP request with URI [/ping] in DispatcherServlet with name ''
Очевидно, что закралась ошибка в конфигурации тестового окружения (так как сам контроллер, как я уже писал, работает). Подскажите, пожалуйста, где может быть ошибка? Спасибо!
Ответы (1 шт):
Автор решения: kostyawh
→ Ссылка
Причина ошибки в том, что в xml-контексте теста не был указан бин контроллера.