我遇到一个问题,我的春季MVC测试无法到达具有匹配路径的控制器。
@RunWith(SpringRunner.class)
@WebMvcTest(controllers = TaskController.class)
public class TaskRestControllerTest {
@Autowired
private MockMvc mvc;
@Test
public void givenTasks_whenGetTaskById_thenReturnJsonMap() throws Exception {
mvc.perform(get("/task/{id}", "001").contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk());
}
@Test
public void givenTasks_whenGetTasks_thenReturnJsonArray() throws Exception {
mvc.perform(get("/task").contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk());
}
}
特定的控制器如下所示。
@RestController
@RequestMapping("/task")
public class TaskController {
@GetMapping
public ResponseEntity<List<Task>> getTasks() {
return new ResponseEntity<>(Arrays.asList(new Task(), new Task()), HttpStatus.OK);
}
@GetMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Task> getTaskById(@PathVariable String id) {
return new ResponseEntity<>(new Task(), HttpStatus.OK);
}
}
我想念什么?我不断收到404回应。而且在调试时,它不会命中TaskController。
为了简洁起见,我离开了控制器中涉及的存储库和服务,只是返回了示例中状态为OK的硬编码新Task。
我也尝试过删除控制器级别的RequestMapping并在@GetMappings上显式指定映射...但这也没有解决。
我正在使用 spring-boot-* 依赖项的版本 2.1.4.RELEASE 。