Java MockMvc返回404

Java MockMvc返回404,java,spring,spring-mvc,mocking,automated-tests,Java,Spring,Spring Mvc,Mocking,Automated Tests,我编写了控制器,它为每个映射使用不同的值。现在我对它进行折射,以便对所有映射使用相同的值,但是我不知道如何使测试工作,因为它对每个映射返回404 这是我的控制器: @CrossOrigin(origins=“*”) @RestController @请求映射(“/v1”) 公共类任务控制器{ @自动连线 DbService-DbService; @自动连线 任务映射器任务映射器; @GetMapping(value=“/tasks”) 公共列表getTasks(){ 返回taskMapper.m

我编写了控制器,它为每个映射使用不同的值。现在我对它进行折射,以便对所有映射使用相同的值,但是我不知道如何使测试工作,因为它对每个映射返回404

这是我的控制器:

@CrossOrigin(origins=“*”)
@RestController
@请求映射(“/v1”)
公共类任务控制器{
@自动连线
DbService-DbService;
@自动连线
任务映射器任务映射器;
@GetMapping(value=“/tasks”)
公共列表getTasks(){
返回taskMapper.mapToTaskDtoList(dbService.getAllTask());
}
@GetMapping(value=“/tasks/{id}”)
public TaskDto getTask(@PathVariable Long id)引发TaskNotFoundException{
返回taskMapper.mapToTaskDto(dbService.getTask(id.orelsetrow(TaskNotFoundException::new));
}
@DeleteMapping(value=“/tasks/{id}”)
public void deleteTask(@PathVariable Long id){
dbService.deleteTask(id);
}
@PutMapping(value=“/tasks”)
public TaskDto updateTask(@RequestBody TaskDto TaskDto){
返回taskMapper.mapToTaskDto(dbService.saveTask(taskMapper.mapToTask(taskDto));
}
@PostMapping(value=“/tasks”,consumes=APPLICATION\u JSON\u value)
public void createTask(@RequestBody TaskDto TaskDto){
saveTask(taskMapper.maptosk(taskDto));
}
}
还有我的测试:

@RunWith(SpringRunner.class)
@WebMvcTest(TaskController.class)
公共类任务控制器测试{
@自动连线
私有MockMvc-MockMvc;
@蚕豆
专用数据库服务;
@蚕豆
私有任务映射器任务映射器;
@试验
public void shouldFetchAllTasks()引发异常{
//给定
列表任务=新建ArrayList();
任务。添加(新任务到(1L,“测试”、“测试”);
添加(新任务到(2L,“测试2”,“静态测试”);
当(taskMapper.mapToTaskDtoList(dbService.getAllTask())。然后返回(tasks);
//什么时候&然后
mockMvc.perform(get(“/v1/task/tasks”).contentType(MediaType.APPLICATION_JSON))
.andExpect(状态().isOk())
.andExpect(jsonPath(“$”,hasSize(2)))
.andExpect(jsonPath(“$[0].id”,是(1)))
.andExpect(jsonPath(“$[0].title”)是(“测试”))
.andExpect(jsonPath(“$[0].content”),是(“测试”))
.andExpect(jsonPath(“$[1].id”,是(2)))
.andExpect(jsonPath(“$[1].title”是(“test2”))
.andExpect(jsonPath(“$[1].content”),是(“仍然测试”);
}
@试验
public void shouldFetchGivenTask()引发异常{
//给定
列表任务=新建ArrayList();
任务。添加(新任务到(1L,“测试”、“测试”);
添加(新任务到(2L,“测试2”,“静态测试”);
when(dbService.getTask(anyLong()).thenReturn(可选的.of(新任务(2L,“test2”,“still_testing”)));
当(taskMapper.mapToTaskDto(anyObject())。然后返回(tasks.get(1));
//什么时候&然后
perform(get(“/v1/task/tasks/{id}”,“2”)
.contentType(MediaType.APPLICATION_JSON))
.andExpect(状态().isOk())
.andExpect(jsonPath($.id),是(2)))
.andExpect(jsonPath($.title)是(“test2”))
.andExpect(jsonPath($.content),是(“仍然测试”);
}
@试验
public void shouldUpdateTask()引发异常{
//给定
TaskDto TaskDto=新任务dto(1L,“测试”、“测试”);
TaskDto updatedaskdto=新taskdo(1L,“更新的任务”,“更多测试”);
当(taskMapper.mapToTaskDto(dbService.saveTask(taskMapper.mapToTask(taskDto)))。然后返回(updatedTaskDto);
Gson Gson=新的Gson();
字符串jsonContent=gson.toJson(taskDto);
//什么时候&然后
mockMvc.perform(put(“/v1/task/tasks”)
.contentType(MediaType.APPLICATION_JSON)
.content(jsonContent))
.andExpect(状态().isOk())
.andExpect(jsonPath($id),是(1)))
.andExpect(jsonPath($.title)是(“更新的任务”))
.andExpect(jsonPath($.content)是(“更多测试”);
}
@试验
public void shouldDeleteTask()引发异常{
//给定
//什么时候&然后
mockMvc.perform(删除(“/v1/task/tasks/{id}”,“1”))
.andExpect(status().isOk());
}
@试验
public void shouldCreateTask()引发异常{
//给定
//什么时候&然后
mockMvc.perform(post(“/v1/task/tasks”)
.contentType(MediaType.APPLICATION_JSON)
.content(“{\”title\”:\“另一个测试\”,“+
“\”内容\“:\”继续测试\“}”))
.andExpect(status().isOk());
}
}
404和以下文件中的所有测试结果:

位于org.springframework.test.util.AssertionErrors.fail(AssertionErrors.java:59) 位于org.springframework.test.util.AssertionErrors.assertEquals(AssertionErrors.java:98) 位于org.springframework.test.web.servlet.result.StatusResultMatchers.lambda$matcher$9(StatusResultMatchers.java:619) 位于org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:195) 位于com.crud.tasks.controller.TaskControllerTest.shouldFetchGivenTask(TaskControllerTest.java:74) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中 位于java.lang.reflect.Method.invoke(Method.java:498) 位于org.junit.runners.model.FrameworkMethod$1.runReflectVeCall(FrameworkMethod.java:50) 位于org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 位于org.junit.runners.model.FrameworkMethod.invokeeexplosive(FrameworkMethod.java:47) 位于org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 在org.springfram