У меня ниже сопоставления конечной точки REST.
@GetMapping("/employee/{id}")
public ResponseEntity<Employee> getEmployee(@PathVariable("id") int id) {
Employee employee = employeeRepository.getEmployeeById (id);
if(employee == null) {
throw new EmployeeNotFoundException ();
}
ResponseEntity<Employee> responseEntity = new ResponseEntity<Employee> (employee, HttpStatus.OK);
return responseEntity;
}
Чтобы проверить неверный путь, у меня есть следующий тестовый пример.
@Test
public void getEmployeeFailTest() throws Exception {
Mockito.when (employeeRepository.getEmployeeById (Mockito.anyInt ())).thenReturn (null);
RequestBuilder requestBuilder = MockMvcRequestBuilders.get ("/employee/10")
.accept (MediaType.APPLICATION_JSON);
MvcResult result = mockMvc.perform (requestBuilder).andReturn ();
String response = result.getResponse ().getContentAsString ();
System.out.println (employeeRepository.getEmployeeById (5)==null);
String expected = "{\"errorCode\":1,\"message\":\"404: Employee not found!\"}";
JSONAssert.assertEquals (expected, response, false);
Assert.assertEquals (404, result.getResponse ().getStatus ());
}
В классе репозитория я возвращаю жестко закодированный объект Employee.
public Employee getEmployeeById(int i) {
Employee employeeMock = new Employee (1, "XYZ","randomEmail@gmail.com",new Department (1, "HR"));
return employeeMock;
}
Тестовые примеры успешно проходят, когда я возвращаю null
в вышеуказанном методе. Но с вышеприведенной реализацией это терпит неудачу.
Благодаря Mockito.when (employeeRepository.getEmployeeById (Mockito.anyInt ())).thenReturn (null);
getEmployeeById
возвращает null
в тестовом методе, но в методе контроллера выше в жестко закодированном Employee
объекте возвращается
Я что-то упустил?