Spring Boot WebMvcTest无法到达控制器

时间:2019-04-12 14:34:59

标签: java spring spring-boot spring-mvc

我遇到一个问题,我的春季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

0 个答案:

没有答案