테스트
- 단위 테스트
- 가장 작은 단위의 테스트. 따라서 하위 계층의 layer (Domain, DAO 등)의 메서드 레벨 테스트가 주를 이룬다.
- 협력 객체가 존재할 때
- 협력 객체를 사용해야 된다면 실제 객체를 사용할지 가짜 객체를 사용할지 고민될 수 있음.
- Classcist: 실제 객체 이용
- mockist: 가짜 객체 이용
- 객체에 의존적인 테스트이므로 통합 테스트로 봐야된다는 의견이 나올 수 있음.
- 통합 테스트
- 여러 계층의 클래스들이 결합된 프로덕션 로직을 테스트. Service layer Test가 그 예시.
- e2e 테스트
- 끝단부터 끝단까지 검사 (ex. API Request ↔ API Response)
- RestAssured
usingRecursiveComparison
을 이용한 body값 검증
equalTo
를 이용한 body값 검증
- 인수 테스트
- 구현하고자 하는 비즈니스 기능이 제대로 작동하는지 테스트
- 백엔드에게는 E2E Test와 동일할 수 있음.
Spring
@PathVariable
vs @RequestBody
- query param으로 받을지, body로 받을지
- HTTP Method 고려한 연관성
- 인증 및 인가 확인
- api 마다 인증 및 인가를 확인한다면?
- 중복 코드 발생 가능
- 하나의 메서드가 하나를 초과하는 책임을 가질 수 있음
- 매번 인증, 인가를 해주어야 함.
- Interceptor
- ArgumentResolver
- JdbcTemplate
NamedParameterJdbcTemplate
- vs fakeDao?
- 외부 라이브러리 의존성
- 외부 라이브러리 버전업 또는 사용여부에 따른 변경 최소화 → 의존성 낮추기
- 인터페이스 분리를 통한 고수준 레벨 의존
HTTP
- Stateless
- Connectionless → Persistent Connections (Http/1.1)
- API
- URI
- Method
- GET
- POST
- PUT
- PATCH
- DELETE
DB
select *
vs select field
@Transactional
readonly