[우아한테크코스] 4월 26일 TIL

less than 1 minute read

오늘 한 일

  1. 체스 피드백 적용
  2. 체스 3단계 미션

[Spring] @Sql annotation

테스트 상단에 @Sql("initSetting.sql")를 선언하고

DROP TABLE pieces IF EXISTS;
DROP TABLE room IF EXISTS;
CREATE TABLE pieces(room_id bigint, piece_name char(1), position char(2));
CREATE TABLE room(id bigint, title varchar(64), turn char(5), playing_flag boolean);
INSERT INTO room (title, turn, playing_flag) values ('hi', 'WHITE', true);
INSERT INTO pieces (room_id, piece_name, position) values (1, 'p', 'a8');

위와 같은 세팅을 해두면 각 test에 반복적으로 코드를 사용하지 않고 기본적인 세팅을 할 수 있다.
executionPhase의 속성 값을 지정하면 언제 쿼리를 실행할지 정할 수 있다.

[Network] 에러처리

사용자의 입력이 원인이 아닌 에러는 badRequest가 아닌 HttpStatus.INTERNAL_SERVER_ERROR로 처리하도록 하자.

@ControllerAdvice
public class ChessAdvice {
    @ExceptionHandler(PieceMoveException.class)
    public ResponseEntity<String> domainExceptionHandle(PieceMoveException e) {
        return ResponseEntity.badRequest().body(e.getMessage());
    }

    @ExceptionHandler(SQLException.class)
    public ResponseEntity<String> sqlExceptionHandle(SQLException e) {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("sql 에러가 발생했습니다.");
    }

    @ExceptionHandler(RuntimeException.class)
    public ResponseEntity<String> runtimeExceptionHandle(RuntimeException e) {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("프로그램 실행 중 문제가 발생했습니다.");
    }
}

[Test] spring test properties 명명

application-{profile}.properties로 명명하는 경우는 서비스 설정 정보를 운영서버, 테스트서버 등으로 구분할 때 사용하고 테스트 코드에서는 test 하위에 resources 하위에 application.properties를 만들어서 사용한다.

[js] promise 객체 나오는거 해결

.then()
await, async
를 이용해서 해결