기존의 테스트 코드인 MessageRepositoryTest 클래스를 동일한 teardown.sql을 사용하도록 변경하고 더미 데이터를 삽입하던 @BeforeEach 구문을 삭제하였습니다.
Description
추가한 테스트 데이터
```sql
INSERT INTO message_tb(user_id, opponent_user_id, content, is_receive, is_read)
VALUES (1, 3, '1번이 3번에게 보낸 쪽지1', false, true),
(3, 1, '1번이 3번에게 보낸 쪽지1', true, true),
(1, 3, '1번이 3번에게 보낸 쪽지2', false, true),
(3, 1, '1번이 3번에게 보낸 쪽지2', true, true),
(1, 3, '1번이 3번에게 보낸 쪽지3', false, true),
(3, 1, '1번이 3번에게 보낸 쪽지3', true, true),
(1, 3, '1번이 3번에게 보낸 쪽지4', false, true),
(3, 1, '1번이 3번에게 보낸 쪽지4', true, true),
(1, 3, '1번이 3번에게 보낸 쪽지5', false, true),
(3, 1, '1번이 3번에게 보낸 쪽지5', true, true),
(3, 1, '3번이 1번에게 보낸 쪽지1', false, true),
(1, 3, '3번이 1번에게 보낸 쪽지1', true, false),
(3, 1, '3번이 1번에게 보낸 쪽지2', false, true),
(1, 3, '3번이 1번에게 보낸 쪽지2', true, false),
(3, 1, '3번이 1번에게 보낸 쪽지3', false, true),
(1, 3, '3번이 1번에게 보낸 쪽지3', true, false),
(3, 1, '3번이 1번에게 보낸 쪽지4', false, true),
(1, 3, '3번이 1번에게 보낸 쪽지4', true, false),
(3, 1, '3번이 1번에게 보낸 쪽지5', false, true),
(1, 3, '3번이 1번에게 보낸 쪽지5', true, false),
(4, 3, '4번이 3번에게 보낸 쪽지1', false, true),
(3, 4, '4번이 3번에게 보낸 쪽지1', true, false),
(4, 3, '4번이 3번에게 보낸 쪽지2', false, true),
(3, 4, '4번이 3번에게 보낸 쪽지2', true, false),
(4, 3, '4번이 3번에게 보낸 쪽지3', false, true),
(3, 4, '4번이 3번에게 보낸 쪽지3', true, false),
(4, 3, '4번이 3번에게 보낸 쪽지4', false, true),
(3, 4, '4번이 3번에게 보낸 쪽지4', true, false),
(4, 3, '4번이 3번에게 보낸 쪽지5', false, true),
(3, 4, '4번이 3번에게 보낸 쪽지5', true, false);
```
2번(최볼링)은 메일 인증안된 유저로 1, 3, 4를 가지고 데이터를 생성하였습니다.
변경된 더미 데이터에 맞게 각 테스트의 assertion 조건을 변경하였습니다.
추가 - UTF-8 encoding
이전 PR에서 데스크탑환경에서 문제 없이 테스트가 돌아갔지만, 노트북으로 작업하려고 하니 테스트가 실패하는 문제가 발생했습니다. 실패할 이유가 없는데 계속 실패해서 미치는줄 알았습니다. (저희 서버는 테스트 잘 통과했습니다.)
오류는 정확히 @WithUserDetails(value = "김볼링")에서 일어났고, WithUserDetails로 해당 유저를 제대로 찾지 못하고 있었습니다. WithUserDeails 문제인지 알고 그 방향으로 서칭하며 이틀을 낭비했는데, 알고보니까 한글 encoding 문제였습니다.
WHERE name='김볼링'의 쿼리가 날아가지만, db에는 김볼링이 깨져 源?蹂쇰쭅로 들어가 있었습니다.
@Sql로 넣은 sql문들의 encoding이 spring.sql.init.encoding: UTF-8과 별개로 config를 직접 넣어줘야 하는걸 알고 해결하였습니다.
추가 - RESTART IDENTITY
UserControllerTest에서는 문제가 없었는데 MessageRepositoryTest에서 @Sql로 teardown.sql을 사용하자 PK가 초기화 되지 않는 문제가 발생했습니다. 따라서 TRUNCATE TABLE 구문에 RESTART IDENTITY를 추가하였습니다.
Summary
기존의 테스트 코드인 MessageRepositoryTest 클래스를 동일한 teardown.sql을 사용하도록 변경하고 더미 데이터를 삽입하던
@BeforeEach
구문을 삭제하였습니다.Description
추가한 테스트 데이터
```sql INSERT INTO message_tb(user_id, opponent_user_id, content, is_receive, is_read) VALUES (1, 3, '1번이 3번에게 보낸 쪽지1', false, true), (3, 1, '1번이 3번에게 보낸 쪽지1', true, true), (1, 3, '1번이 3번에게 보낸 쪽지2', false, true), (3, 1, '1번이 3번에게 보낸 쪽지2', true, true), (1, 3, '1번이 3번에게 보낸 쪽지3', false, true), (3, 1, '1번이 3번에게 보낸 쪽지3', true, true), (1, 3, '1번이 3번에게 보낸 쪽지4', false, true), (3, 1, '1번이 3번에게 보낸 쪽지4', true, true), (1, 3, '1번이 3번에게 보낸 쪽지5', false, true), (3, 1, '1번이 3번에게 보낸 쪽지5', true, true), (3, 1, '3번이 1번에게 보낸 쪽지1', false, true), (1, 3, '3번이 1번에게 보낸 쪽지1', true, false), (3, 1, '3번이 1번에게 보낸 쪽지2', false, true), (1, 3, '3번이 1번에게 보낸 쪽지2', true, false), (3, 1, '3번이 1번에게 보낸 쪽지3', false, true), (1, 3, '3번이 1번에게 보낸 쪽지3', true, false), (3, 1, '3번이 1번에게 보낸 쪽지4', false, true), (1, 3, '3번이 1번에게 보낸 쪽지4', true, false), (3, 1, '3번이 1번에게 보낸 쪽지5', false, true), (1, 3, '3번이 1번에게 보낸 쪽지5', true, false), (4, 3, '4번이 3번에게 보낸 쪽지1', false, true), (3, 4, '4번이 3번에게 보낸 쪽지1', true, false), (4, 3, '4번이 3번에게 보낸 쪽지2', false, true), (3, 4, '4번이 3번에게 보낸 쪽지2', true, false), (4, 3, '4번이 3번에게 보낸 쪽지3', false, true), (3, 4, '4번이 3번에게 보낸 쪽지3', true, false), (4, 3, '4번이 3번에게 보낸 쪽지4', false, true), (3, 4, '4번이 3번에게 보낸 쪽지4', true, false), (4, 3, '4번이 3번에게 보낸 쪽지5', false, true), (3, 4, '4번이 3번에게 보낸 쪽지5', true, false); ```2번(최볼링)은 메일 인증안된 유저로 1, 3, 4를 가지고 데이터를 생성하였습니다.
변경된 더미 데이터에 맞게 각 테스트의 assertion 조건을 변경하였습니다.
추가 - UTF-8 encoding
이전 PR에서 데스크탑환경에서 문제 없이 테스트가 돌아갔지만, 노트북으로 작업하려고 하니 테스트가 실패하는 문제가 발생했습니다. 실패할 이유가 없는데 계속 실패해서 미치는줄 알았습니다. (저희 서버는 테스트 잘 통과했습니다.)
오류는 정확히
@WithUserDetails(value = "김볼링")
에서 일어났고, WithUserDetails로 해당 유저를 제대로 찾지 못하고 있었습니다. WithUserDeails 문제인지 알고 그 방향으로 서칭하며 이틀을 낭비했는데, 알고보니까 한글 encoding 문제였습니다.WHERE name='김볼링'
의 쿼리가 날아가지만, db에는 김볼링이 깨져源?蹂쇰쭅
로 들어가 있었습니다.@Sql
로 넣은 sql문들의 encoding이spring.sql.init.encoding: UTF-8
과 별개로 config를 직접 넣어줘야 하는걸 알고 해결하였습니다.추가 - RESTART IDENTITY
@Sql
로 teardown.sql을 사용하자 PK가 초기화 되지 않는 문제가 발생했습니다. 따라서 TRUNCATE TABLE 구문에 RESTART IDENTITY를 추가하였습니다.Related Issue
Issue Number: #63