TIL

24.04.11

아리단길아조씨 2024. 4. 12. 10:57
728x90

24.04.11 
NestJS에서의 테스트 코드

Testing Structure
- 테스팅코드는 하나의 큰 테스트 스위트(test suite) 안에 여러개의 관련된 테스트 블럭(test case)들로 이루어지게 됨

1. describe(name, callbackFn)
- 테스트 스위트(관련된 작은 테스트 블록들의 집합)를 만드는 메서드
-> 테스트 스위트 안에는 여러 개의 테스트 블록들이 모여있음

name 매개변수는 해당 테스트를 나타내주는(설명) 문자열 형태가 온다.
callbackFn 매개변수 자리에는 테스트 블럭들을 wrapping 해주는 콜백함수가 온다.

2. test(name, callbackFn, timeout) === it(name, callbackFn, timeout)
- 실제로 테스트를 하는 test blcok을 생성해주는 메서드임
테스트 스위트를 만들어주는 describe의 1, 2번 째 매개변수가 같지만 timeout이라는 매개변수가 추가되어있음
timeout: 몇 ms뒤에 콜백함수가 실행을 시킬 지 예약해주는(?) 친구임

3. expect(value)
- 다양한 항목의 유효성을 검사할 수 있는 matcher에 접근할 수 있도록 도와주는 인터페이스임

* matcher = 내가 기대하는 값과 실제 출력 값을 비교하는 과정이 필요한데 이 두값을 비교할 수 있게 해주는 메서드

자주 사용하는 matcher

1. toBe
- 두 값을 비교하기 위해 Object.is()를 사용함
(기본형 데이터 타입에는 정확한 비교가 되지만, 참고향 데이터 타입에서는 원하는 대로 결과를 출력하지 않음)

2. toEqual
- 객체나 배열의 모든 필드를 재귀적으로 확인함
(toBe에서 비교할 수 없었던 배열,객체를 비교할 수 있어짐)

3. toMatch
- 문자열을 검사해줌
ex) test('there is no I in team', () => {
  expect('team').not.toMatch(/I/);
});

4. toThrow
- 특정함수가 호출됐을 때 오류가 발생하는지 테스트 할 수 있음

NestJS에서 테스트 코드 작성하기

1. npm i --save-dev @nestjs/testing 패키지 설치
2. 테스트 코드 파일 생성
3. 테스트 코드 파일 환경 세팅
- 테스트하려는 모듈과 똑같은 환경을 만들어줘야함

4. 테스트 스위트 생성 === describe(name, callbackFn)
5. 테스팅 모듈 생성: Test 클래스 안에 있는 createTestingModule, compile 메서드가 테스팅 모듈을 만드는데 도움을 준다.
createTestingModule: 모듈 생성에 필요한 메타데이터를 인자로 전달해줌
compile: NestJS가 일반적으로 모듈을 만드는 방식으로 테스팅 모듈을 만들어줌
6. Providers 등록
providers = 비즈니스 로직을 담당하는 자바스크립트 Class

'TIL' 카테고리의 다른 글

24.04.15  (0) 2024.04.16
24.04.12  (0) 2024.04.15
24.04.09  (0) 2024.04.11
24.04.08  (0) 2024.04.09
24.04.05  (0) 2024.04.08