-
3. NestJs 설문조사 미니 프로젝트 - [ 테스트 ] - 실패하는 테스트 케이스공부하기/node.js 2023. 2. 14. 18:37
지난 포스팅에서 작성한 in bound port, out bound port, service를 사용하여 실패하는 테스트 케이스를 작성하도록 하겠습니다.
실패하는 테스트 케이스를 작성한 뒤 각각의 테스트 케이스가 통과할 수 있도록 구현할 예정입니다.
지난 포스팅에서 모든 서비스의 execute의 리턴값을 null로 설정했기 때문에 이번 포스팅에서 작성된 모든 테스트 케이스는 실패합니다.
설문지 목록(findAll) 테스트 케이스
import { SurveyFindAllInPortInputDto, SurveyFindAllInPortOutputDto, } from '../../in-port/survey-findall.ip'; import { SurveyFindAllService } from '../survey-findall.service'; describe('설문지 리스트를 반환한다.', () => { const surveyList: SurveyFindAllInPortOutputDto = [ { id: 1, name: '당신이 선호하는 백엔드 언어는?', description: '백엔드 개발자가 선호하는 언어를 조사하기 위한 설문지입니다.', }, { id: 2, name: '당신이 선호하는 프론트엔드 언어는?', description: '프론트엔드 개발자가 선호하는 언어를 조사하기 위한 설문지입니다.', }, { id: 3, name: '당신이 nodejs 개발자를 선택한 이유는?', description: '개발자가 자신이 주력으로 사용한 언어를 선택한 이유를 묻는 설문지입니다.', }, ]; const params: SurveyFindAllInPortInputDto = { page: 1, size: 3, sort: 'ASC', }; const findAllSurveyService = new SurveyFindAllService(); test('설문지 목록', async () => { const findallResult = await findAllSurveyService.execute(params); expect(findallResult).toStrictEqual(surveyList); }); });
- surveyList: findAll 메서드의 결과로 예상되는 설문지 리스트
- params: 설문지 리스트 요청 input
설문지 상세(findOne) 테스트 케이스
import { SurveyFindOneInPortInputDto, SurveyFindOneInPortOutputDto, } from '../../in-port/survey-findone.ip'; import { SurveyFindOneService } from '../survey-findone.service'; describe('설문지 상세정보를 반환한다.', () => { const survey: SurveyFindOneInPortOutputDto = { id: 1, name: 'test-survey', description: 'test-desc', }; const params: SurveyFindOneInPortInputDto = 1; const findAllSurveyService = new SurveyFindOneService(); test('설문지 상세', async () => { const findoneResult = await findAllSurveyService.execute(params); expect(findoneResult).toStrictEqual(survey); }); });
- survey: 예상되는 설문지 상세 오브젝트
- params: 찾고자 하는 설문지 id
설문지 생성(create) 테스트 케이스
import { SurveyCreateInPortInputDto, SurveyCreateInPortOutputDto, } from '../../in-port/survey-create.ip'; import { SurveyCreateService } from '../survey-create.service'; describe('설문지를 생성한다.', () => { const survey: SurveyCreateInPortOutputDto = { id: 1, name: 'test-survey', description: 'test-desc', }; const params: SurveyCreateInPortInputDto = { name: 'test-survey', description: 'test-desc', }; const CreateSurveyService = new SurveyCreateService(); test('설문지 생성.', async () => { const createResult = await CreateSurveyService.execute(params); expect(createResult).toStrictEqual(survey); }); });
- survey: 생성된 설문지
- params: 설문지 생성 input
설문지 업데이트(update) 테스트 케이스
import { SurveyUpdateService } from '../survey-update.service'; describe('설문지 업데이트', () => { const UpdateSurveyService = new SurveyUpdateService(); test('설문지 이름', async () => { const nameUpdateResult = await UpdateSurveyService.execute({ name: 'update-test-survey', }); expect(nameUpdateResult).toStrictEqual({ id: 1, name: 'update-test-survey', description: 'test-desc', }); }); test('설문지 설명', async () => { const descUpdateResult = await UpdateSurveyService.execute({ description: 'update-test-desc', }); expect(descUpdateResult).toStrictEqual({ id: 1, name: 'update-test-survey', description: 'update-test-desc', }); }); });
- nameUpdateResult: 설문지 이름 업데이트 예상 결과
- descUpdateResult: 설문지 설명 업데이트 예상 결과
설문지 삭제(delete) 테스트 케이스
import { SurveyDeleteInPortInputDto } from '../../in-port/survey-delete.ip'; import { SurveyDeleteService } from '../survey-delete.service'; type SurveyList = Array<{ id: number; name: string; description: string; }>; describe('설문지를 생성한다.', () => { const existIdDeleteParam: SurveyDeleteInPortInputDto = 1; const notExistIdDeleteParam: SurveyDeleteInPortInputDto = 4; const DeleteSurveyService = new SurveyDeleteService(); test('존재하는 설문지 삭제', async () => { const res = await DeleteSurveyService.execute(existIdDeleteParam); expect(res).toBe(1); }); test('존재하지 않는 설문지 삭제', async () => { const res = await DeleteSurveyService.execute(notExistIdDeleteParam); expect(res).toBe(0); }); });
- surveyList: 데이터베이스에 이미 저장되어 있다고 가정되는 설문지 리스트
- existIdDeleteParam: 데이터베이스에 이미 존재하고 있다고 예상되는 설문지 id
- notExistIdDeleteParam: 데이터베이스에 존재하지 않는다고 예상되는 설문지 id
설문지 검색(search) 테스트 케이스
import { SurveySearchInPortInputDto } from '../../in-port/survey-search.ip'; import { SurveySearchService } from '../survey-Search.service'; describe('설문지 리스트를 반환한다.', () => { const params: SurveySearchInPortInputDto = { page: 1, size: 3, sort: 'ASC', keyword: '백엔드', }; const SearchSurveyService = new SurveySearchService(); test('설문지 검색 목록', async () => { const SearchResult = await SearchSurveyService.execute(params); expect(SearchResult).toStrictEqual([ { id: 1, name: '당신이 선호하는 백엔드 언어는?', description: '백엔드 개발자가 선호하는 언어를 조사하기 위한 설문지입니다.', }, ]); }); });
- surveyList: 데이터베이스에 이미 저장되어 있다고 가정되는 설문지 리스트
- params: 설문지 검색 input
테스트 결과
'공부하기 > node.js' 카테고리의 다른 글
nestjs, typeorm-extension을 사용한 seeding (0) 2023.02.22 4. NestJs & Hexagonal - [ 테스트 ] - 실패하는 테스트가 성공하도록 최소한으로 구현하기 (0) 2023.02.14 2. NestJs & Hexagonal - [ ports ] (0) 2023.02.12 1. NestJs 설문조사 미니 프로젝트 - [ 엔티티 ] (0) 2023.02.12 9. NestJs & Git Actions CI/CD - [ AWS EC2 배포 ] - https (0) 2023.02.05