sitelink1 https://github.com/mochajs/mocha 
sitelink2 https://github.com/shouldjs/should.js 
sitelink3 https://github.com/visionmedia/supertest 
extra_vars4  
extra_vars5  
extra_vars6  

https://youtu.be/6koMggZsEXo

 

각 모듈들은 npm사이트(https://www.npmjs.com)에서 검색하면 상세 내용 확인 가능

 

 

1. mocha : 자바스크립트 또는 브라우저 단위 테스트 프레임워크

  1.1. 설치

    - 명령어 : npm i mocha --save-dev

      > save dev 옵션은 dependencies가 아닌 devDependencies쪽으로 mocha를 설치한다 (package.json, 개발 및 테스트 환경에서 사용하는 모듈로 분류됨)

  1.2. 사용

    - 테스트 하려는 js 와 동일한 위치에 *.spec.js 파일을 생성한다

      > index.js 를 테스트 하는 경우 index.spec.js 파일 생성

    - index.js 에 정의한 users 목록을 반환하는 비즈니스 로직을 테스트하도록 다음과 같이 코딩한다

        const assert = require('assert')

        describe('GET /users', () => { //테스트 꾸러미 (테스트 케이스들을 담는 자루)

           it('배열을 반환한다', () => { //테스트 케이스

             assert.equal(1,1)

           })

         })

  1.3. 실행

      - package.json 의 scripts 부분에서 test 에 "mocha ./index.spec.js" 라고 설정 (테스트용 소스 파일명은 보통 spec이라는 관용 키워드로 구분함)

      - 콘솔에서 npm test 라고 실행 (test t 로도 구동 가능)

 

2. Should : mocha의 assertion과 같은 단위 테스트용 검증(assertion) 라이브러리 (키워드가 should)

  2.1 설치

    - 콘솔에서 npm i should --save-dev

  2.2. 사용

      const assert = require('assert')

      const should = require('should')

      describe('GET /users', () => {

           it('배열을 반환한다', () => {

             //assert.equal(1,1) <-- 검증 모듈로 assert 대신 should 를 많이 사용한다

             (1).should.equal(1) //should는 영어 문장과 같은 구조를 가지고 있어 API 학습이 쉽다

           })

         })

  2.3. 실행

      - 콘솔에서 npm test 라고 실행

 

3. SuperTest : 단위 테스트가 아닌 통합 테스트를 할 수 있는 라이브러리 (CI가 가능한 테스트 자동화 툴)

  3.1 설치

    - 콘솔에서 npm i supertest --save-dev

  3.2. 사용

      const assert = require('assert')

      const should = require('should')

      const request = require('supertest')

      const app = require('./index') //내부적으로 express 서버를 구동시키게 되므로 index에 있는 express를 객체를 넘겨 받아야 한다

      describe('GET /users', () => {

           it('배열을 반환한다', (done) => {

 

             request(app)

               .get('/users')

               .end(err, res) => {

                 //console.log(res.body)

                 res.body.should.be.instanceof(Array) //응답 내용은 배열이어야 한다

                 res.body.forEach(user => {

                   user.should.have.property('name') //배열안의 user 객체는 name이라는 속성을 가지고 있어야 한다

                 })

 

                 done() //테스트 완료를 알려야 함

               })

           })

         })

  3.3. 실행

      - 콘솔에서 npm test 라고 실행

 

 

 

※ Tacademy 온라인 강의 4강 TDD 이해 및 환경 구축에서는 SuperTest를 구축할때 기존의 express를 export하여 테스트용 서버로 운용하는 방법으로 실습을 진행한다

  => https://tacademy.skplanet.com/live/player/onlineLectureDetail.action?seq=134#sec2

 

 

번호 제목 글쓴이 날짜 조회 수
36 no pooling 상태에서 beginTransaction 콜백을 이용한 Transaction 처리 황제낙엽 2021.01.16 15
35 mysql.escape()로 where 문 작성 황제낙엽 2021.01.16 47
34 req, res 객체 황제낙엽 2021.01.14 19
33 mysql basic (mysql 설치, 접속, 조회) 황제낙엽 2021.01.12 18
32 urlencode : request params의 한글 처리 황제낙엽 2020.12.06 99
31 express 4.16부터는 body-parser를 내장한다 황제낙엽 2020.12.06 268
30 [TDD/REST-7강] 코드 리팩토링 (express.Router, control) 황제낙엽 2020.12.04 46
29 [TDD/REST-6강] 사용자 API 개발 황제낙엽 2020.12.03 29
28 [TDD/REST-목차][T아카데미] Node.js 기반의 REST API 서버 개발 file 황제낙엽 2020.12.03 15
27 [TDD/REST-5강] TDD로 API 서버 개발 (작업절차, get users 테스트) 황제낙엽 2020.12.01 11
» [TDD/REST-4강] TDD 이해 및 환경 구축 (Rest API, TDD, mocha, Should, SuperTest) 황제낙엽 2020.12.01 18
25 google oatuh passport file 황제낙엽 2020.11.12 18
24 google oauth 인증 (구글 로그인) file 황제낙엽 2020.11.12 84
23 express-sse 모듈과 EventEmitter 황제낙엽 2020.09.20 265
22 [Node Package Manager] npm audit file 황제낙엽 2020.09.17 5
21 Node.js , NPM 관련 명령어 정리 황제낙엽 2020.09.10 141
20 [Deprecated] request / request 황제낙엽 2020.08.26 123
19 dotenv (Node.js 기반에서 환경변수 사용하기) 황제낙엽 2020.08.23 81
18 로깅툴 morgan (Logging) 황제낙엽 2020.08.19 12
17 nodemon 설치 및 활용 file 황제낙엽 2020.08.16 102