초안 @Test @DisplayName("게시글 업데이트 성공 테스트") void updateBoard() { // given User user = mock(User.class); Board board = mock(Board.class); BoardRequestDto boardRequestDto = mock(BoardRequestDto.class); when(boardRepository.findById(board.getId())).thenReturn(Optional.of(board)); when(Optional.of(board).get().checkBoardWriter(user)).thenReturn(true); // 이 두 줄은 깡통에게 "이런 질문이 오면 무조건 이렇게 대답해" 하고 명령을 넣어놓는 ..
일단은 생성 성공 테스트부터 초안 @ExtendWith(MockitoExtension.class) class BoardServiceImplTest { @Mock BoardRepository boardRepository; @InjectMocks BoardServiceImpl boardService; @Test @DisplayName("게시글 생성 성공 테스트") void createBoard() { BoardRequestDto requestDto = BoardRequestDto.builder() .title("title1") .content("content1") .build(); User user = mock(User.class); //when boardService.createBoard(requestDt..
전체 코드(한꺼번에 연달아서 붙여넣기) 컨트롤러 @RestController @RequestMapping("/boards") @RequiredArgsConstructor public class BoardController { private final BoardService boardService; private final SetHttpHeaders httpHeaders; // 게시글 생성 @PostMapping public ResponseEntity createBoard( @RequestBody BoardRequestDto boardRequestDto, @AuthenticationPrincipal UserDetailsImpl userDetails) { boardService.createBoard(boar..
일반적으로 컨트롤러에는 별도의 로직이 없다. 서비스를 부르는 게 그냥 단순함. 스프링은 컨테이너다. @Conponent 는 스프링 보고, "이 객체를 관리해줘" 라고 말하는 것이다. 객체는 일반적으로 new 붙이고 사용하는데, 여기서는 그냥 쓰고 있다. private final SetHttpHeaders httpHeaders; 이게 스프링의 역할. 스프링이 객체를 만들어서 넣어줬어. setHeaderTypeJson() 이걸 매번 쓰고 있으니까 아예 클래스로까지 빼서 이것만 사용하게 만들 수 있도록 해 둔 것 같다. 이걸 클래스에서 객체로 만들지 않고 그냥 static으로 만들면 어디서든 쓸 수 있으니까, static으로 리펙토링 하는 것을 고려해보도록. UserDetails는 사용자 정보 관련 시큐리티다..

예외처리 관련 프로그램 실행 중 예기치 못한 사건을 예외라고 한다. 예외 상황을 미리 예측하고 처리하는 것을 예외처리라고 한다. 기본적으로 런타임 시점에서 발생하는 오류는 에러(error)와 예외(exception)으로 나뉜다. 에러(Error) : 메모리 부족(OutOfMemoryError)이나 스택오버플로우(StackOverflowError)와 같이 일단 발생하면 복구할 수 없는 심각한 오류 예외(exception) : 인자값 Null 에러NPE(NullPointException)같은 발생하더라도 수습이 가능한 덜 심각한 오류. 실행 예외 (RuntimeException) Runtime Error: 프로그램 실행 시점에서 발생하는 에러로 컴파일러는 컴파일 시점에서 문법 오류나 오타같은 컴파일시점에서 ..
_03_Throw package prac18; //의도적 에러 만들어서 던지기 public class _03_Throw { public static void main(String[] args) { int age = 17; // 만 17세 try { if(age < 19) { // System.out.println("만 19세 미만에게는 판매하지 않아요."); // 일부러 애러 발생시키기 : throw throw new Exception("만 19세 미만에게는 판매하지 않아요."); } else { System.out.println("주문하신 상품 여기 있습니다. "); } } catch (Exception e){ e.printStackTrace(); } } } _04_Finally package prac..

답안 package prac18; // 손님 이름 및 나이 정보를 위한 Customer 클래스 생성 // 입장료는 1인당 5천원 // 20세 이상에게만 부과 나머진 무료 // 힌트: map()을 이용하여 원하는 형태로 데이터 가공을 할 수 있음. // 삼항연산자 활용 // 메리 50 // 나나 42 // 벤자민 21 // 코코 18 // 마이클 5 // 미술관 입장료 // ----------- // 메리 50 5000원 // 나나 42 5000원 // 벤자민 21 5000원 // 코코 18 무료 // 마이클 5 무료 import java.util.ArrayList; public class Quiz_Prac17 { public static void main(String[] args) { ArrayList ..
후발대수업_19. 예외처리2 (Throw, Finally, TryWithResources, CustomException, Throws) 진행 내용 (수업자료) 실습코드 Stream 퀴즈풀이 package com.sparta.hbd04.prac01.prac15; // 메리 50 // 나나 42 // 벤자민 21 // 코코 18 // 마이클 5 import java.util.ArrayList; // 미술관 입장료 // ----------- // 메리 50 5000원 // 나나 42 5000원 // 벤자민 21 5000원 // 코코 18 무료 // 마이클 5 무료 public class Prac15 { public static void main(String[] args) { ArrayList list = ne..