Helmi

프레젠테이션(웹)계층 CRUD 구현 -②CRUD 작성, REGISTER(등록) 본문

SpringBoot

프레젠테이션(웹)계층 CRUD 구현 -②CRUD 작성, REGISTER(등록)

Helmi 2023. 5. 5. 18:17

1. 등록 처리와 테스트

BoardController에 POST 방식으로 처리되는 register() 작성하면 아래와 같음

BoardController.java 일부

	@PostMapping("/register")
	public String register(BoardVO board, RedirectAttributes rttr) {
		
		log.info("register:" + board);
		
		service.register(board);
		
		rttr.addFlashAttribute("result", board.getBno());
		
		return "redirect:/board/list";
	}

register() 메서드는 조금 다르게 String을 리턴 타입으로 지정하고, RedirectAttributes를 파라미터로 지정. 이는 등록 작업이 끝난 후 다시 목록 화면으로 이동하기 위함. 추가적으로 새롭게 등록된 게시물 번호를 같이 전달하기 위해 RedirectAttributes를 이용. 리턴 시 'redirect:' 접두어 사용하는데 이를 이용하면 스프링 MVC가 내부적으로 response.sendRedirect()처리 해주기 때문에 편리

 

com.board.controller.BoardControllerTests.java 일부

@Test
	public void testRegister() throws Exception{
		String resultPage = mockMvc.perform(MockMvcRequestBuilders.post("/board/register")
				.param("title", "테스트 새 글 제목")
				.param("content", "테스트 새 글 내용")
				.param("writer", "user00")
				).andReturn().getModelAndView().getViewName();
		
		log.info(resultPage);
	}

테스트시 MockMvcRequestBuilder의 post() 이용하면 POST 방식으로 데이터 전달 가능, param() 이용해 전달해야 하는 파라미터들 지정 가능. (<input> 태그와 유사한 역할) 이러한 방식으로 코드 작성 시 나중에 매번 입력할 필요 없으므로 오류가 발생하거나 수정하는 경우 반복적 테스트 수월해짐.