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

 

 

번호 제목 글쓴이 날짜 조회 수
56 Node.js로 ES6 코드 실행하기 (Babel) file 황제낙엽 2023.01.07 370
55 자바스크립트 CommonJS 모듈 내보내기/불러오기 (require) file 황제낙엽 2023.01.07 331
54 Node.js에서 ES 모듈(import/export) 사용하기 file 황제낙엽 2023.01.07 600
53 CommonJS 와 ES 의 Module 시스템 황제낙엽 2023.01.07 337
52 [session] 기본 - Express-session 기반 로그인 세션 관리 황제낙엽 2022.01.03 308
51 [session] 기본 - 2 file 황제낙엽 2022.01.03 327
50 [session] 기본 - 1 황제낙엽 2022.01.03 326
49 [T아카데미] Node.js 프로그램 기초부터 응용까지 강좌 모음 황제낙엽 2021.03.15 235
48 Node.js 에서 Bulk INSERT 를 하는 방법 (multi insert) 황제낙엽 2021.02.02 1363
47 mysql, mysql2 모듈 버전 비교 황제낙엽 2021.01.31 595
46 [T아카데미/Node.js 프로그래밍] 프로그램 흐름 제어 (콜백지옥, Async, Promise) file 황제낙엽 2021.01.27 349
45 ORM 툴 Sequelize file 황제낙엽 2021.01.27 334
44 [connection과 pool-05] pool 생성이 너무 많은 경우의 database에서의 에러 - Too many connections file 황제낙엽 2021.01.27 483
43 [connection과 pool-04] connection pool 에서의 Transaction을 이용한 commit 과 rollback 황제낙엽 2021.01.27 341
42 [connection과 pool-03] mysql.createPool 과 connection.query 황제낙엽 2021.01.27 940
41 [connection과 pool-02] mysql.createPool 과 pool.query 황제낙엽 2021.01.27 460
40 [connection과 pool-01] mysql.createConnection 과 connection.query 황제낙엽 2021.01.27 388
39 [T아카데미/Node.js 프로그래밍/MySQL] createPool, getConnection 의 간단한 예제 (강의 예제) 황제낙엽 2021.01.27 379
38 여러 개의 데이터 베이스 연결을 동시에 관리하는 PoolCluster 황제낙엽 2021.01.16 2698
37 connetion pooling 과 connection leak 황제낙엽 2021.01.16 359