단위 테스트

Unit Testing 유닛 테스트 과정 Fake UsersService를 만들어서 실행할 계획이다. 정상적으로 애플리케이션을 실행하면 DI 안에 많은 종속성을 넣어야 한다. 우린 새롭게 테스트를 위한 DI를 만드는데, 내부에는 Userss Service의 모든 메서드를 실행하는 클래스를 담는다. 이로서 어떤 단위(ex. Authentication, sign in 등)을 테스트하는데 종속성 주입에서 자유로워질 수 있다. Test 설정하기 users 디렉토리에 auth.service.spec.ts 파일을 만들자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 // auth.service.spec.ts import { Test } from '@nestjs/testing'; import { AuthService } from './auth.service'; import { UsersService } from './users.service'; it('can create an instance of auth service', async () => { // 새 DI container 생성 // 하지만 AUthService를 위한 종속성을 제공하지 않았으니 실행하면 오류가 뜰것이다. constmudle = await Testing.createTestingModule({ providers:[AuthService] }).compile(); const service = module.get(AuthService); expect(service).toBeDefined(); }); 터미널에서 npm run test:watch를 입력한다. 3개가 failed라고 뜰텐데, p를 누르고 auth.service.spec 을 입력한다. 그럼 이 파일만 테스트하여 1 failed라고 뜬다. ...

2023년 10월 9일 · 5 분 · 배준수

Nest 아키텍처 : 모듈

종속성 주입 이해를 위한 소규모 프로젝트 소규모 프로젝트 개요 3개의 계층으로 이루어진 모듈을 만들 것이다. 최상층에는 Computer Module이 있고 내부에는 Computer Controller가 run이라는 메서드를 가진다. 이 내부에는 CPU, Disk Module이 있는데 각각 CPU Service, Disk Service를 가지고 있으며 이는 또 compute와 getData라는 메서드를 가진다. 최하층에는 Power Module이 있으며 Power Service를 가진다. 메서드는 supplyPower()이다. 생성은 당연히 최하층 Power Module이 전원을 제공하면 CPU와 Disk가 작동하고 Computer가 작동하는 형태이다. 기존과는 다른 새로운 디렉토리에서 Nest 프로젝트를 시작하자. ...

2023년 10월 7일 · 6 분 · 배준수

Nest 아키텍처 : 서비스와 레포지토리

서비스와 레포지토리 공통점과 차이점 둘 다 클래스이다. 서비스는 비즈니스 로직을 넣는 곳이다. 레포지토리는 저장과 관련된 로직을 넣는 곳이다. 서비스는 데이터를 찾거나 저장하기 위해 하나 이상의 레포지토리를 사용한다. 레포지토리는 일반적으로 TypeORM entity, Mongoose schema 등으로 끝난다. 서비스와 레포지토리에서 사용하는 메서드는 동작이 비슷하다. 서비스에서 ‘데이터를 찾아라’ 라는 메서드를 호출할 것이고 레포지토리에서는 그 메서드를 실행할 것이기 때문. 그럼에도 서비스는 필요하다. 이유는 후술! 레포지토리 만들기 src 디렉토리 내에 messages.repository.ts와 messages.service.ts를 만든다. 루트 디렉토리에는 messages.json 파일을 만든다. 내용은 비워둔다. (안 만들면 찾을 파일이 없어서 오류발) ...

2023년 10월 6일 · 6 분 · 배준수