페이스북에서 개발한 자바스크립트 테스트 프레임워크
JavaScript 및 TypeScript 애플리케이션의 유닛 테스트, 통합 테스트, end-to-end 테스트를 작성하는 데 사용된다.
Jest는 사용하기 쉽고 강력한 기능을 제공하여 개발자가 코드를 안정적으로 테스트할 수 있도록 도와준다.
nest.js에서는 기본적으로 Jest를 제공하기 때문에 따로 모듈을 설치할 필요가 없다.
spec.ts라고 써있는 파일은 테스트를 위한 파일이다.

사용이 간편하고 설정이 적다.
빠르고 병렬 처리되는 테스트 실행이 가능하다.
Jest에서 기대하는 값과 실제 값을 비교하는 함수이다.
테스트 코드에서 expect() 를 사용하여 결과가 예상대로 왔는지 확인하는 역할을 한다.
ex) toBe Matcher 함수이다.
expect(2 + 2).toBe(4);
🧭 기본 Matcher 함수
- toBe(value): 값이 같은지 확인한다.
- toEqual(value): 객체의 모든 값이 같은지 재귀적으로 확인한다.
- toBeNull(): toBe(null)과 같고, Falsy일때 조금 더 명확한 에러 메세지가 발생한다.
- toBeUndefined(): 값이 undefined인걸 확인한다.
- toBeDefined(): 위에와 반대이다.
- toBeTruhty(): JS에서 인지하는 true 값을 반환하는지 확인한다.
- toBeFalsy(): toBeTruthy()의 반대
- toBeNan(): 숫자가 아님을 확인한다.
⏰ 숫자 Matcher 함수
- toBeGreaterThan(number): 값이 더 큰지 확인한다.
- toBeGreaterThanOrEqual(number): 값이 더 크거나 같은지 확인한다..
- toBeLessThan(number): 값이 더 작은지 확인한다.
- toBeLessThanOrEqual(number): 값이 더 작거나 같은지 확인한다.
- toBeCloseTo(number, 소수점): 특정 소수점까지 같은 값인지 확인한다.
🕰 함수 Matcher 함수
- toHaveBeenCalled():mock function이 호출되었는지 확인한다. (많이 사용)
- toHaveBeenCalledTimes(number): mock function이 지정된 횟수만큼 호출되었는지 확인한다. (많이 사용)
- toHaveBeenCalledWith(arg1, arg2): mock fucntion이 특정 파라미터와 함께 호출되었는지 확인한다. (많이 사용)
- toHaveBeenLastCalledWith(value): mock function이 마지막으로 호출될 때 특정 파라미터와 함께 호출되었는지 확인한다.
- toHaveReturned(): mock function이 값을 반환했는지 확인한다, (에러x)
- toHaveReturnedTimes(number): mock function이 값을 지정된 횟수만큼 반환했는지 확인한다.
- toHaveReturnedWith(value): mock function이 특정 값을 반환했는지 확인한다.
- toHaveLastReturnedWith(value): mock function이 마지막으로 특정 값을 반환했는지 확인한다.
- toHaveNthReturnedWity(nthCall, value): mock function이 n번째로 특정 값을 반환했는지 확인한다.
🖊 배열 및 객체 Matcher 함수
- toContain(item): 배열 또는 문자열에 특정 항목이 포함되어 있는지 확인한다..
- toContainEqual(item): 배열에 구조적으로 같은 항목이 포함되어 있는지 확인한다..
- toHaveLength(number): 배열, 문자열 또는 객체의 길이/크기가 특정 값과 일치하는지 확인한다.
- toHaveProperty(key, value?): 객체에 특정 경로의 속성이 존재하고, 선택적으로 해당 속성의 값이 특정 값과 일치하는지 확인한다.
- toMatchObject(object): 객체가 특정 객체와 부분적으로 일치하는지 확인한다.
🧤 에러 Matcher 함수
- toThrow(error?): 함수가 호출될 때 특정 오류를 던지는지 확인한다.
🧾 기타 Matcher 함수
- toStricEqual(value): 객체가 구조적으로 완벽히 동일한지 확인한다.
- toBelnstanceOf(class): 값이 특정 클래스의 인스터스인지 확인한다.
- toMatch(refexp | string): 문자열이 정규 표현식 또는 문자열과 일치하는지 확인한다.
- expect.anything(): 아무 값이나 허용하지만 null이나 undefined는 제외한다.
- expect.any(constructor): 특정 생성자의 인스턴스인지 확인한다.
- expect.arrayContaining(array): 입력된 array가 비교 대상 array의 전부 포함되는지 확인한다.
- expect.objectContaining(object): 입력된 객체가 비교 대상 객체의 전부 포함되는지 확인한다.
- expect.stringContaning(string): 특정 문자열이 포함 돼있는지 확인한다.