-
Notifications
You must be signed in to change notification settings - Fork 7
tech diary 2022.07.06
Philz edited this page Jul 21, 2022
·
1 revision
final, final, final !!!!
- 인수테스트의 부모인
AcceptanceTest
에 생성
- json path를 string타입으로 넣어서 field 조회 가능
- list 객체인 경우 discussions.0으로 개별 데이터 조회
- discussions.id → id field를 list로 묶어서 검증 가능
[MockMvc를 이용한 REST API의 Json Response 검증 (tistory.com)](https://ykh6242.tistory.com/entry/MockMvc%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-REST-API%EC%9D%98-Json-Response-%EA%B2%80%EC%A6%9D)
- Reflect로 해결?
- test에 의한 src/main package 내용 변경을 하지 않기 위한 방안
- Reflect가 우리 생각보다 고비용일지도,,? (굳이..라는 반응)
- Response를 Entity 통하지 말고, Dto 생성자 열어서 해결? ← 채택
- Test를 위한 변경이긴 하지만, production이라고 보기도 애매하고 그냥 Dto일뿐인데 그걸 그렇게까지 제한해야 하나,, (네오생각)
- 이런 상황에서는 최대한 간단한 해결법을 생각할 것 같다
- Long을 보냈다고 해서 검증값을 Long type으로 주는 것이 아님
- java Long type으로 보냈지만, json 객체로 pasing된 이후에는 그저 숫자일 뿐
- 1L → 1로 수정 후 test 통과
- 직접 BeforeEach method 작성?
-
@Transactional
- id값 문제, 테스트 격리 해결 X (repository test의 각 case에 대해 “전”처리 필요)
- truncate.sql작성 +
@Sql
- 우리가 의도한 ui 동작을 통해 들어오는 요청임에도 발생하는 예외 → 인수테스트
- ex) 로그인 실패, Form validation 통과했음에도 발생할 수 있는 예외 등
- 그 외 예외 → ~ Controller test
- ex) uri 조작 또는 postman 요청 등.. 억지스러운 상황들
- [Java - LocalDateTime을 TimeStamp로 변경하는 방법 (codechacha.com)](https://codechacha.com/ko/java-convert-localdatetime-to-timestamp/)
- 변환 시점은 언제?
- view에서 원하는 형식을 만들어주는 로직이니까 Dto에게 주자 (만장일치)
- 생성자에서는 field에 값 할당하는 로직”만”?
- LocalDateTime → Timestamp 변환 정도는 생성자에서 해줘도 괜찮지 않나..?
- → static factory method에서 entity를 받아 변환하도록 작성
-
Lombok Annotation 안나온다고 당황하지 말고 Preference에서 설정해주자
~가 문제가 아니고 Test Package에 있었다~
이런 기준도 있다~ 정도.. 그러나 SpringDataJpa 사용을 위해 method 이름 통일
값이 하나 이상 존재할 것이라고 상정되는 경우 (ex id값으로 조회)get
값이 존재할 지 말지 모르겠고 일단 찾아보는 경우 (ex 목록조회)find
-
findAll
query
public List<Discussion> findAll() {
return entityManager.createQuery("select d from Discussion d", Discussion.class).getResultList();
}
- public, private 섞어서 (호출 순서 따라서)
- public 우선, private은 밑으로 (채택)
- 1기준을 접근제한자로
- 2기준 호출순서
- Lombok을 통해 Builder 패턴 적용
적용된 Builder 패턴 사용하기
{클래스명}.builder()
.{초기화 할 필드명}({값})
.build();
- Exception class에서 status code를 지정해준다?
- 포키 소신발언: web에 필요한 정보에 대한 관심사는 controller에서 끊기면 좋겠당,, HttpStatus는 controller 계층에서 정해주면 좋겠당~!
- 일단 보류, 지금은 작은 단위의 Exception만 custom해두고 추후에 필요할 때 다시 고민하자~!!
- feature branch에서 rebase를 통해서 분기 시점을 옮긴다
- 단점: 특정 commit에서 conflict이 발생하는 경우 그 이후 모든 commit에 대해 개별적으로 conflict을 해결해야 함
- 장점: fast-forward 유지로 예쁜 commit log
[Git에 commit Template 추가 (set up Git Commit Template) (achicgo.blogspot.com)](http://achicgo.blogspot.com/2020/08/git-commit-template-set-up-git-commit.html)
.gitmessage가 있는 directory에서 git bash 실행 → template 설정 명령어를 실행해 줍니다.
$ cp ./.gitmessage ~/.gitmessage
$ git config --global commit.template ~/.gitmessage
- 우리 Issue 왜 자꾸 안닫힘?ㅠ