반응형 개발공부/NestJS8 [노마드 코더 NestJS로 API 만들기] 3 Testing E2E npm run test:e2e 테스팅 어플리케이션도 실제 어플리케이션처럼 설정하기 - main.ts의 pipe beforeAll(async () => { const moduleFixture: TestingModule = await Test.createTestingModule({ imports: [AppModule], }).compile(); app = moduleFixture.createNestApplication(); app.useGlobalPipes( new ValidationPipe({ whitelist: true, forbidNonWhitelisted: true, transform: true, }), ); await app.init(); }); app.e2e-spec.ts - 유저가 사용할 수 있.. 2023. 8. 20. [노마드 코더 NestJS로 API 만들기] 3 Testing Jest 유닛 테스트: 모든 function을 하나씩 테스트하는 것 e2e 테스트: 이페이지로 가면 특정페이지가 나와야하는 경우 (사용자 관점) getAll, getOne, deleteOne 등 만들었던 함수들 유닛 테스트하기 Jest가 spec.ts 를 찾을 수 있도록 돼있다. 테스팅하고 싶은 파일명에 spec.ts를 붙이면 된다. spec.ts 에 예시 추가 it('should be 4', () => { expect(2+2).toEqual(4); }) movie.service.spec.ts 에 유닛테스트 만들기 get describe('getAll', () => { it('should return an array', () => { const result = service.getAll(); // 배열로 리턴하는.. 2023. 8. 16. [NestJs] Modules, Injection 모듈: 여러 컴포넌트를 조합하여 좀 더 큰 작업을 수행할 수 있게 하는 단위모듈로 쪼개는 이유: 여러 모듈에 각기 맡은 책임을 나누고 응집도를 높이기 위해마이크로서비스 아키텍처 관점에서 모듈이 커지면 하나의 마이크로서비스로 분리할 수 있다. 모듈 생성하기nest g mo 모듈을 분리하는 것이 좋다.app.module.ts@Module({ imports: [MovieModule], controllers: [], providers: [],}) movie.module.ts@Module({ controllers: [MovieController], providers: [MovieService],}) controller 생성app.controller.tsnest g co마찬가지로 app.provider.. 2023. 8. 16. [노마드 코더 NestJS로 API 만들기] 2 DTO, Validation 파이프 요청이 라우터 핸들러로 전달되기 전에 요청 객체를 변환할 수 있는 것. ValidationPipe ParseIntPipe / ParseBoolPipe / ParseArrayPipe / ParseUUIDPipe : 전달된 인수의 타입을 검사 DefaultValuePipe : 쿼리 매개변수가 생략된 경우 기본값 설정 유효성 검사 라이브러리 class-validator, class-transformer 설치하기 npm i class-validator class-transformer mapped-types 설치하기 npm i mapped-types main.ts 에 유효성 검사 pipe 생성하기 transform: request로 들어온 파라미터를 원하는 타입으로 변경해준다. true로 해야한다. app.. 2023. 8. 13. [노마드 코더 NestJS로 API 만들기] 2 service service 생성 $ nest g s entity 폴더 생성 > 데이터베이스 모델 생성 - 가짜 데이터베이스 export class Movie { id: number; title: string; year: number; genres: string[]; } service 에 로직 구현 단일 책임의 원칙 - 한개의 요소는 한개의 기능만 책임진다. @Injectable() export class MovieService { private movies: Movie[] = []; getAll(): Movie[] { return this.movies; } getOne(id: string): Movie { const movie = this.movies.find((movie) => movie.id === +id); i.. 2023. 8. 12. 2 Rest API - Controller, Route [노마드 코더 NestJS로 API 만들기] 컨트롤러 생성$ nest g co Get & Param & Query @Get() getAll() { return 'retturn'; } @Get('search') search(@Query('year') year: string) { return `searcing after ${year}`; } @Get(':id') getOne(@Param('id') id: string) { return id; } Post & Body @Post() create(@Body() movieData) { return movieData; } Delete & Param @Delete() remove(@Param('id') id: string) { return id; } Patc.. 2023. 8. 12. [NestJS] 초기 세팅 설치$ npm i -g @nestjs/cli 프로젝트 생성$ nest new 프로젝트 실행$ npm run start:dev 알아야할 용어: 데코레이터 main.ts : NestFactory를 사용하여 Nest 애플리케이션 인스턴스를 작성하는 애플리케이션의 엔트리 파일모든게 시작된다. app.module.ts : application의 root Module루트 모듈이며 모든 모듈을 import한다. app.controller.ts : 기본 컨트롤러라우트같은 것으로 url을 가져오고 function을 리턴한다. app.controller.spec.ts : 컨트롤러에 대한 단위 테스트 app.service.ts: 기본 서비스비지니스 로직이며 function을 가지고 있다. 2023. 8. 11. NestJs 밋업 Shall We NestJS? 정리 NestJS 책을 읽고 나서 강의를 봐볼까?해서 유투브 검색중에 밋업 영상을 발견했습니다. 핵심만 요약돼있는 영상이라 좋네요. 00:00 오프닝 07:29 남병관: NestJS 시작하기 58:18 이상훈: Angular 프론트엔드 개발자가 본 NestJS 1:21:20 이동현: NestJS에서 Hexagonal Architecture 구현하기 2:02:29 김수현: NestJS와 함께한 3년간 고군분투기 2:46:28 마무리 핵심키워드: controllers / providers / modules / pipes 서버 아키텍처를 쉽게 만들 수 있도록 기본 아키텍쳐를 제공한다. CRUD에 필요한 요소들을 가볍게 세팅해준다. Controller 우리가 아는 controller @Get, @Post, @Put,.. 2023. 8. 3. 이전 1 다음 728x90 반응형