테스트 코드는 describe()
와 it()
구문으로 구성
describe()
: 테스트 스위트(Suite)를 작성하는 블록
테스트 스위트는 의미 있는 단위로 묶은 것
describe(케이스의 이름: string, 수행될 코드(콜백함수))
it()
: 특정 테스트 시나리오를 작성
서로 의존관계가 존재하지 않도록 작성하는 것이 중요
Given / When / Then
Given
: 해당 테스트 케이스가 동작하기 위해 갖춰져야 하는 선행조건 '어떤 상황이 주어졌을 때'When
: 테스트하고자 하는 대상 코드를 실행합니다. '대상 코드가 동작한다면'Then
: 대상 코드의 수행 결과를 판단 '기대한 값과 수행 결과가 맞는지'beforeAll()
: 테스트 스위트 내의 모든 케이스 수행 전 한 번만 실행beforeEach()
: 각 테스트 케이스가 수행되기 전마다 수행afterEach()
: 테스트 케이스 수행된 후afterAll()
: 모든 테스트 케이스 수행한 후테스트는 테스트하고자 하는 대상의 동작에만 집중해야 함
주입받거나 생성해서 사용한 외부 모듈이나 객체는 테스트의 대상이 아님
외부 모듈을 임의의 객체로 다루는 것: 테스트 더블
해당 service는 repository가 필요한데 test Module이 repository를 제공하지 않아 생기는 에러다.
service 레이어의 unit test 코드 작성 시 사용되는 모든 repository를 의존성 주입해줘야 한다.