class TodoServiceTest {
@Mock
TodoRepository todoRepository;
@InjectMocks
TodoService todoService;
@Test
@DisplayName("할일을 등록하는 로직 테스트 ")
public void testCreateTodo(){
TodoRequestDto todoRequestDto = new TodoRequestDto();
todoRequestDto.setTitle("Test Title");
todoRequestDto.setContents("Test Contents");
todoRequestDto.setManager("dhgudtjr6635@naver.com");
todoRequestDto.setPassword("1357");
Todo todo = new Todo(todoRequestDto);
when(todoRepository.save(any(Todo.class))).thenReturn(todo);
ApiResponse<TodoResponseDto> response = todoService.createTodo(todoRequestDto);
assertNotNull(response.getData());
System.out.println("Pass");
assertEquals(HttpStatus.OK,response.getStatus());
System.out.println("Pass");
assertEquals(todo.getId() , response.getData().getId());
System.out.println("Pass");
assertEquals(todo.getTitle(),response.getData().getTitle());
System.out.println("Pass");
assertEquals(todo.getContents(),response.getData().getContents());
System.out.println("Pass");
assertEquals(todo.getManager(),response.getData().getManager());
System.out.println("Pass");
verify(todoRepository , times(1)).save(any(Todo.class));
}
@Test
@DisplayName("조회 하는 로직 테스트 ")
public void testInquireTodo(){
Long id = 1L;
Todo todo = new Todo();
when(todoRepository.findById(id)).thenReturn(Optional.of(todo));
ApiResponse<TodoResponseDto> response = todoService.inquireTodo(id);
assertNotNull(response.getData(),"Response data should not null");
assertEquals(HttpStatus.OK,response.getStatus(),"Response data should be OK");
verify(todoRepository,times(1)).findById(id);
}
@Test
@DisplayName("전체조회 로직 테스트")
public void testInquireTodoList(){
Todo todo1 = new Todo();
Todo todo2 = new Todo();
List<Todo> todoList = Arrays.asList(todo1,todo2);
when(todoRepository.findAllByOrderByModifiedAtDesc()).thenReturn(todoList);
ApiResponse<List> response = todoService.getTodo();
assertNotNull(response.getData(), "Response data should not be null");
}
@Test
@DisplayName("수정 NotFound 테스트")
public void testUpdateTodoNotFound(){
TodoRequestDto todoRequestDto = new TodoRequestDto();
Long id = 1L;
when(todoRepository.findById(id)).thenReturn(Optional.empty());
ApiResponse<Long> response = todoService.updateTodo(todoRequestDto,id);
assertEquals(HttpStatus.NOT_FOUND,response.getStatus());
}
@Mock
TodoRepository todoRepository;
@InjectMocks
TodoService todoService;
@Test
@DisplayName("할일을 등록하는 로직 테스트 ")
public void testCreateTodo(){
TodoRequestDto todoRequestDto = new TodoRequestDto();
todoRequestDto.setTitle("Test Title");
todoRequestDto.setContents("Test Contents");
todoRequestDto.setManager("dhgudtjr6635@naver.com");
todoRequestDto.setPassword("1357");
Todo todo = new Todo(todoRequestDto);
when(todoRepository.save(any(Todo.class))).thenReturn(todo);
ApiResponse<TodoResponseDto> response = todoService.createTodo(todoRequestDto);
assertNotNull(response.getData());
System.out.println("Pass");
assertEquals(HttpStatus.OK,response.getStatus());
System.out.println("Pass");
assertEquals(todo.getId() , response.getData().getId());
System.out.println("Pass");
assertEquals(todo.getTitle(),response.getData().getTitle());
System.out.println("Pass");
assertEquals(todo.getContents(),response.getData().getContents());
System.out.println("Pass");
assertEquals(todo.getManager(),response.getData().getManager());
System.out.println("Pass");
verify(todoRepository , times(1)).save(any(Todo.class));
}
@Test
@DisplayName("조회 하는 로직 테스트 ")
public void testInquireTodo(){
Long id = 1L;
Todo todo = new Todo();
when(todoRepository.findById(id)).thenReturn(Optional.of(todo));
ApiResponse<TodoResponseDto> response = todoService.inquireTodo(id);
assertNotNull(response.getData(),"Response data should not null");
assertEquals(HttpStatus.OK,response.getStatus(),"Response data should be OK");
verify(todoRepository,times(1)).findById(id);
}
@Test
@DisplayName("전체조회 로직 테스트")
public void testInquireTodoList(){
Todo todo1 = new Todo();
Todo todo2 = new Todo();
List<Todo> todoList = Arrays.asList(todo1,todo2);
when(todoRepository.findAllByOrderByModifiedAtDesc()).thenReturn(todoList);
ApiResponse<List> response = todoService.getTodo();
assertNotNull(response.getData(), "Response data should not be null");
}
@Test
@DisplayName("수정 NotFound 테스트")
public void testUpdateTodoNotFound(){
TodoRequestDto todoRequestDto = new TodoRequestDto();
Long id = 1L;
when(todoRepository.findById(id)).thenReturn(Optional.empty());
ApiResponse<Long> response = todoService.updateTodo(todoRequestDto,id);
assertEquals(HttpStatus.NOT_FOUND,response.getStatus());
}
mockito를 사용해서 모의 객체를 만들어 테스트를 해보았다. 업데이트 부분 구현중에 옵셔널 문제가 있었는대 옵셔널이 null값을 가지면 안되는 것같다. 값이없음을 나타낼때는 empty() 를 사용하고 확인할 때는 isPresent를 사용하는 것 같다.
'TIL' 카테고리의 다른 글
(2024-05-27) 필터,spring security (0) | 2024.05.28 |
---|---|
(2024-05-24) Bean수동 등록,같은 타입 Bean,인증 인가 (0) | 2024.05.27 |
(2024-05-17) 개인과제,swagger (0) | 2024.05.17 |
(2024-05-16) 영속성 컨텍스트,스프링 데이터jpa,개인과제 (0) | 2024.05.16 |
(2024-05-14) 스프링 입문 db연동,역할 분리 ,DI,IOC (0) | 2024.05.14 |