NestJS/jest (테스트 코드) 4

[NestJS] Jest 단위 테스트 - toBeCalled / toHaveBeenCalled

jest 테스팅 프레임워크에서 제공하는 toBeCalled와 toHaveBeenCalled는 함수가 호출되었는지 여부를 확인하는 함수로, 두 가지 모두 같은 역할을 합니다. 1. toBeCalled toBeCalled는 특정 함수가 최소 한 번 호출되었는지를 확인합니다. const fn = { addUser: jest.fn((name, age) => ({ name, age })), } test('toBeCalled 확인', () => { fn.addUser('John', 25) expect(fn.addUser).toBeCalled() }) - 함수가 호출되었는지 테스트 하기 위해서는 Mock 함수를 사용해야 합니다. jest.fn()를 통해 fn.addUser을 Mock 함수로 만들고, toBeCalle..

[NestJS] Jest 단위 테스트 - toBe / toEqual

Jest 테스팅 프레임워크의 toBe와 toEqual은 '동등성 비교 메서드' 입니다. 이 두 메서드의 주요한 차이점은 toEqual은 객체나 배열과 같은 복잡한 데이터 구조에 주로 사용된 다는 것이며, toBe는 간단한 원시 값 또는 정확한 객체 인스턴스에 대한 비교에 사용된다는 것 입니다. 따라서, toEqual은 더 유연한 동등성 비교를 수행하며, toBe는 더 엄격한 동등한 비교를 수행합니다. 이 두 메서드에 대한 선택은 테스트의 목적과 예상 결과에 따라 달라집니다. 1. toBe toBe는 객체나 원시 값을 정확히 비교하는 데 사용합니다. 값의 형식과 내용을 모두 비교하여 일치하는지 확인하며, 값의 형식과 내용이 완전히 동일해야 테스트가 통과됩니다. 이는 엄격한 동등성 검사를 수행하는데, 예상 ..

[NestJS] Jest 단위 테스트 - TestingModule

1. 모듈(Module) 자바스크립트에서 모듈이란 어떤 코드를 다른 JS 파일에서 불러오기 편하도록 하나의 파일에 모아둔 것 입니다. 프로젝트가 커질수록 모든 JS 코드를 하나의 파일에 두기 어렵기 때문에, 자연스럽게 코드가 여러 JS 코드로 나눠지게 됩니다. (기능에 따라 모듈을 나눌 경우, 유지보수 및 코드 이해가 편하기 때문에 모듈을 나눠 작성할 것을 권장합니다.) - NestJS에서 모듈은 대부분 다른 모듈에서 아래와 같이 import 키워드를 통해 불러내어 사용하게 됩니다. import { UsersService } from './users.service' 2. TestingModule NestJS에서 제공하는 @nestjs/testion 패키지를 사용하면 테스트에 사용되는 종속성만 선언해서 모..

[NestJS] Jest 단위 테스트 - Mocking

1. 모킹(Mocking)이란? 자바스크립트 테스팅 프레임워크로 jest를 사용할 경우, 장점 중 하나는 다른 라이브러리의 설치 없이 바로 mock 기능을 사용할 수 있다는 것입니다. mock(모킹)이란, 테스트하려는 코드의 외부 의존성이 존재할 때 모조품을 만들어 일단 돌아가게 하는 것입니다. 즉, 단위 테스트를 작성할 때 해당 코드가 의존하는 부분을 가짜(mock) 으로 대체하는 기법입니다. 예를 들면, 데이터베이스에 직접 데이터를 저장하거나, 삭제하는 코드에 대한 단위 테스트를 작성할 때 실제 데이터베이스를 사용하게 된다면 아래 예시 처럼 여러 가지 문제점이 발생할 수 있습니다. - 데이터베이스 접속과 같이 I/O 작업이 포함되는 테스트 케이스를 작성하게 될 경우 실행 속도가 현저히 떨어질 수 밖에..