Helmi

프레젠테이션(웹)계층 CRUD 구현 - ⑤CRUD 작성, Delete(삭제) 본문

SpringBoot

프레젠테이션(웹)계층 CRUD 구현 - ⑤CRUD 작성, Delete(삭제)

Helmi 2023. 5. 13. 10:49

삭제 처리도 조회와 유사하게 BoardController와 테스트 코드 작성,
삭제는 반드시 POST 방식으로만 처리
 
com.board.controller.BoardController.java 일부

@PostMapping("/remove")
	
	public String remove (@RequestParam("bno") Long bno, RedirectAttributes rttr) {
		log.info("remove..." + bno );
		if(service.remove(bno)) {
			rttr.addFlashAttribute("result", "success");
		}
		return "redirect:/board/list";
		}

BoardController의 remove()는 삭제 후 페이지 이동 필요하므로 RedirectAttributes를 파라미터로 사용하고 'redirect' 이용해 삭제 처리 후에 다시 목록 페이지로 이동
 
테스트 코드는 기존의 등록 처리와 유사
 
com.board.controller.BoardControllerTest.java 일부

@Test
	public void testRemove() throws Exception {
		//삭제 전 데이터베이스에 게시물 번호 확인할 것
		String resultPage = mockMvc.perform(MockMvcRequestBuilders.post("/board/remove")
				.param("bno", "25")
				).andReturn().getModelAndView().getViewName();
		
		log.info(resultPage);
				
	}

MockMvc 이용해 파라미터 전달할 때 문자열로만 처리해야 함. 테스트 전에 게시물 번호가 존재하는지 확인 후 테스트 실행. 로그 일부는 SQL이 실행됨
 
경우에 따라 Controller에 대한 테스트 코드를 작성하는 것에 대해 거부감 가지는 경우도 많음. 대부분은 일정에 여유 없다고 테스트 작성하지 않는 경우 많은데 프로젝트 진행하는 멤버들 경험치 낮을수록 테스트 먼저 진행하는 습관 가지는 것이 좋음. 반복적으로 입력과 수정, WAS의 재시작 시간 고려해보면 Controller에 대한 테스트 진행하는 선택이 더 빠른 개발의 결과 낳는 경우 많다!