1. TDD란?

우동이·2022년 1월 9일
0

NodeServer Test

목록 보기
2/6
post-thumbnail
  • Test Driven Development: 테스트 주도 개발을 의미
  • 애플리케이션을 더 안정적으로 구현 및 운영할 수 있습니다.
    • 디버깅 시간 감소 및 생산성 증가
    • 재설계 시간 단축
    • 확장성 용이
  • 이번 TDDNode Server에 관련해서 진행할 예정입니다.
    • TypeScript
      • 이 프로젝트는 타입스크립트를 기반으로 진행합니다.
    • Node.js 설치
      • 기존 Express Server 셋팅
    • Mongoose 설치
      • Model Class => Collection 접근
      • Model Instance => Documents 접근
      • 스키마
        • 문서의 구조, 기본값, 유효성 검사기 등을 정의
        • 스키마를 이용해서 Model을 만들 수 있습니다.
        • Model은 레코드 생성 / 쿼리 / 업데이트 / 삭제 등 데이터베이스 인터페이스를 제공합니다.
    • Jest 설치
      • 단위 테스트 모듈
    • node-mocks-http 설치
      • 단위 테스트 모듈
    • supertest 설치
      • 통합 테스트 모듈
npm isntall express mongoose node-mon --save

npm install jest supertest node-mocks-http --save-dev

// typescript 셋팅
npm install ts-node typescript ts-jest
npm install -D @types/express @types/node @types/mongoose @types/jest @types/supertest

타입스크립트 셋팅

  • tsconfig.json
{
  "compilerOptions": {
    "allowJs": true, // 자바스크립트 파일 컴파일 허용 여부
    "target": "es6", // 어떤 버전으로 컴파일할지 작성
    "module": "commonjs", // 어떤 모듈 방식으로 컴파일할지 설정
    "outDir": "./dist", // 컴파일 후 js 파일들이 생성되는 곳
    "rootDir": ".", // 루트 폴더 지정
    "strict": true, // 모든 엄격한 타입-체킹 옵션 활성화 여부
    "moduleResolution": "node", // 모듈 해석 방법 => Node.js
    "esModuleInterop": true, // ES6 모듈 사양을 준수하여 CommonJS 모듈을 가져올 수 있게 허용
    "skipLibCheck": true, // 정의 파일의 타입 확인을 건너 뛸 지 여부
    "resolveJsonModule": true // json data import
  },
  "include": ["src/*.ts"],
  "exclude": ["node_modules, dist"]
}
  • package.json의 script
"scripts": {
    "start": "node dist/src/index.js",
    "build": "tsc --build",
    "dev": "nodemon --exec ts-node src/index.ts"
  },

테스트 종류

  • Unit Test( 단위 테스트 )

    • 개별적인 함수들을 하나씩 테스트 하는 것
    • 의존성이 없는 개별 함수를 테스트 하는 것
  • Integration Test( 통합 테스트 )

    • 여러 모듈들의 상호작용이 잘 이루어지는지 테스트 하는 것
    • 의존성을 바탕으로 한 플로우를 테스트하는 것

참고

  • 따라하며 배우는 TDD 개발 ( John Ahn )
profile
아직 나는 취해있을 수 없다...

0개의 댓글