항해 99
항해 99 32일차 10/20일
코딩이좋아요
2022. 10. 21. 02:26
Sequelize의 Test 환경 구성하기
더보기
- Sequelize로 MySQL을 연결할 때, NODE_ENV를 test로 설정할 경우 기존에 설정된 DB가 아닌, config.json에 test 부분에 설정된 값으로 DB를 연결 할 수 있습니다.
- Integration Test를 실행할 때, 기존에 사용하는 Development 환경이 아닌, test DB를 사용할 경우 데이터를 언제든지 자유롭게 관리 할 수 있고, 생성 및 삭제가 쉽게 가능해집니다
많이 사용하는 Jest 문법
더보기
.toBe(value)
- 입력받은 결과값과 동일한지 비교합니다.
- 만약 Instance를 비교하려 한다면, Instance의 ID까지 비교하므로 엄격하게 동일한지 검증합니다.
- .toEqual(value)
- 입력받은 결과값과 동일한지 비교합니다.
- .toMatch(regexp | string)
- 입력받은 결과값과 문자열이 같은지 검증합니다.
- String 또는 정규표현식으로 검증할 수 있습니다.
- .toBeTruthy()
- 결과값이 True인지 검증합니다.
- .toBeInstanceOf(Class)
- 입력받은 값과 Class가 동일한 Instance인지 검증합니다.
- Error를 검증할 때 주로 사용합니다.
- .toHaveProperty(keyPath, value?)
- 입력받은 객체의 Key와 Value가 일치하는지 검증합니다.
- .toMatchObject(object)
- 결과값의 객체와 입력받은 객체가 일치하는지 검증합니다.
- 만약 입력받은 객체에서 없는 속성이 있더라도 일치하게끔 연결합니다.
- .toHaveBeenCalledTimes(number)
- Mock이 몇번 호출되었는지 검증합니다.
- .toHaveBeenCalledWith(arg1, arg2, ...)
- 어떤 인자를 이용해 Mock이 호출되었는지 검사합니다.
테스트란 (feat: Clean Code)
더보기
- T1: 불충분한 테스트
- 테스트 케이스는 잠재적으로 깨질 만한 부분을 모두 테스트해야 한다. 테스트 케이스가 확인하지 않는 조건이나 검증하지 않는 계산이 있다면 그 테스트는 불완전하다.
- T2: 커버리지 도구를 사용하라
- 커버리지 도구는 테스트가 빠뜨리는 공백을 알려준다. 커버리지 도구를 사용하면 테스트가 불충분한 모듈, 클래스, 함수를 찾기 쉬워진다.
- T3: 사소한 테스트를 건너뛰지 마라
- 사소한 테스트는 짜기 쉽다. 사소한 테스트가 제공하는 문서적 가치는 구현에 드는 비용을 넘어선다.
- T4: 무시한 테스트는 모호함을 뜻한다.
- 때로는 요구사항이 불분명하기에 프로그램이 돌아가는 방식을 확신하기 어렵다. 불분명한 요구사항은 테스트 케이스를 주석으로 처리하거나 테스트 케이스에 @ignore를 붙여 표현한다.
- T5: 경계 조건을 테스트하라
- 경계 조건은 각별히 신경 써서 테스트한다. 알고리즘의 핵심 조건은 올바로 짜놓고 경계 조건에서 실수하는 경우가 흔하다.
- T6: 버그 주변은 철저히 테스트하라
- 버그는 서로 모이는 경향이 있다. 한 함수에서 버그를 발견했다면 그 함수를 철저히 테스트하는 편이 좋다.
- T7: 실패 패턴을 살펴라
- 테스트 케이스가 실패하는 패턴으로 때때로 문제를 진단할 수 있다. 합리적인 순서로 정렬된 꼼꼼한 테스트 케이스는 실패 패턴을 드러낸다.
- T8: 테스트 커버리지 패턴을 살펴라
- 통과하는 테스트가 실행하거나 실행하지 않는 코드를 살펴보면 실패하는 테스트 케이스의 실패 원인이 드러난다.