항해99 3기

[TIL] 2021.11.10 최종 프로젝트 진행중

na_o 2021. 11. 10. 10:34
728x90

코드를 작성하면서

test-board 브랜치에서 게시판 테스트코드를 작성하고

swagger 브랜치에서 swagger와 관련된 코드를 작성했다

test-board에서 swagger로 이동할 때

git stash

명령어로

지금까지 짰던 코드들을 임시저장해놓았다

swager브랜치에서 작업한 뒤 다시 test-board로 이동해야 하기 때문에 또 git stash 명령어를 썼다

test-board로 이동 후 이전에 임시저장해놓았던 것을 불러와야 했다

어떻게 불러오는 지 몰라서 검색해봤다

https://helloinyong.tistory.com/202

 

[2019.09.13] git stash 사용법 - 현재 상태를 저장해보자

최근에 A브랜치에서 작업을 완료 후 pull Request를 올렸다. 그리고 새로운 기능의 작업을 위해 B브랜치를 따서 쭉 작업하는 중, A브랜치에서 작업한 내용의 코드 리뷰를 받아 수정할 사항이 생겼다

helloinyong.tistory.com

git stash list

명령어로 지금까지 저장했던 리스트를 볼 수 있었다

여기서 저장 기록에 대한 stash ID를 알아내고(stash@{1})

git stash apply 'stash ID'

명령어를 입력해 test-board에서 stash한 기록을 꺼내왔다


어제 팀원분께서 잡아주신 흐름에 대해 이해 안갔던 부분을 이해할 수 있었따

1. dto 유닛테스트
2. 엔티티 유닛테스트
3. 서비스에 있는 메소드 테스트
4. 컨트롤러-서비스-리포지토리 통합테스트

dto 유닛테스트와 엔티티 유닛테스트의 차이점을 몰랐다

팀원분께서 설명해주셨는데

 

dto 유닛 테스트는 사용자가 입력한 값들을 받아오는 순간

사용자가 입력 조건을 모두 충족했는지 테스트를 해야하는 것이고

 

엔티티 유닛 테스트는 Service단을 거쳐와 데이터들이 가공된 후

DB에 Insert가 될 조건 && 화면에서 정의한 입력 조건을 모두 충족했는지 테스트를 해야하는 것이라고 하셨다

 

내가 테스트코드에 대한 지식이 적어서 그런지

팀원분이 왜 이렇게 고민하고 있는 것인지 이해하지 못했다

이젠 이해할 수 있게 되었다..ㅎ

 


Controller 테스트에서 Dto 테스트도 같이 하는거다

왜냐하면 컨트롤러에서는 사용자가 입력한 값들을 가지고 response가 제대로 오는지 아닌지에 대해 판단만 하는 로직이 있어서

어차피 Dto에 있는 값들로 인해 response가 정해지기 때문에

Controller테스트에서 Dto 테스트도 같이 한다

requestDto는 사용자가 화면에서 입력한 값들이 백엔드 로직으로 전달되어 requestDto가 만들어진 상태(값이 들어있는 상태)로 시작한다

값이 들어있는 requestDto는 가장 먼저 Controller에서 시작하기 때문에 

Controller테스트에서 Dto 테스트도 같이 한다


게시판쪽을 다루다보니, 제목과 내용을 입력받을 때 글자수 제한에 대해 신경써야 했다

DB(MySQL8.0)에 들어가야하기 때문에 Byte 제한이 넘어버리면 DB에 들어가지 않기 때문이다

프론트와 얘기를 해서 제목 최대 100, 내용 최대 1000으로 마무리지었다

근데 100과 1000이 Byte기준인지, 글자 수 기준인지 모르겠더라..!

일단 js에서 length 함수를 쓴 기준으로 100과 1000으로 얘기를 끝냈다

그래서 js에서 length함수가 byte기준인지, 글자수 기준인지 알아봐야 했다

https://www.codingfactory.net/10895

 

JavaScript / Object / String.length / 문자열의 길이 반환하는 속성

.length .length는 문자열의 길이를 반환하는 속성입니다. 문법 string.length 예를 들어 'abcd'.length 는 4입니다. 예제

ㅋㅋㅋㅋㅋ아 내가 기초가 잘 잡혀있지 않았던건가

위의 상황에서 순간 헷갈렸을 뿐이다...ㅎ

js에서 length()는 글자 개수다

띄어쓰기든, 한글이든, 알파벳 하나이던, 숫자 하나든 무조건 1이다

 

 

그 다음 MySQL에서 varchar(숫자)의 '숫자'는 byte기준인지 글자수 기준인지 알아봐야 한다

https://dung-beetle.tistory.com/26

 

mysql varchar 한글 입력사이즈 계산 어떻게 하는 거야?

#mysql varchar로 선언하면 한글은 몇글자까지 넣을 수 있을까? 개발쪽에서 한글입력관련 이슈를 문의해서 Varchar(50) 으로 선언한 컬럼에 데이터를 넣었을 때 몇글자에서 too long error가 나서 안들어갈

dung-beetle.tistory.com

그 전에 한글은 2bytes나 3bytes라는 정도는 알고 있었다

근데 왜 한글 = 2바이트 라는 말도 있고 한글 = 3바이트 라는 말이 있는거지? 라는 의문점이 들었다

위의 글을 보니까 encoding type에 따라 바이트수가 달랐던 것이었다!

결론은 MySQL에서 varchar(숫자)의 '숫자'는 한글이던 숫자던 영어던 글자 수였던 거였다

 

 

 

Java에서도 문자열의 length 함수가 글자수인지 확인해봤다

https://dion-ko.tistory.com/67

 

[Java] 자바 문자(텍스트) 길이(length) 가져오기 사용법 & 예제

안녕하세요. 오늘은 자바 length()에 대해서 알아보겠습니다. - length()란 자바 length()란 문자열의 길이를 표현하는 메소드입니다. 자주 쓰이게 되는 용도로는 서버에서 텍스트의 길이를 제한하기

dion-ko.tistory.com

역시나 글자수 였다

 

결론은 프론트에서도 백엔드에서도 DB에서도 글자수만 신경쓰면 된다