// index.spec.js

=================================

const assert = require('assert')

 

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

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

    assert.equal(1, 1)            // 1과 1은 같은가?

  })

})

=================================

 

// package.json

=================================

{

"name": "node-api-server-sample",

"version": "1.0.0",

"description": "",

"main": "index3.js",

"dependencies": {

"express": "^4.17.0",

"morgan": "^1.9.1"

},

"devDependencies": {

"mocha": "^6.1.4",

"should": "^13.2.3",

"supertest": "^4.0.2"

},

"scripts": {

"start": "node ./index3.js",

"test": "mocha ./index.spec.js"

},

"author": "",

"license": "ISC"

}

=================================

 

1. mocha를 이용해 test 진행

npm test 또는 npm t

 

1 passing 확인 가능

1 = 1 이므로 성공함

 

 

2. 실패시 출력되는 로그 확인하기

// index.spec.js

=================================

const assert = require('assert')

 

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

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

    assert.equal(1, 2) // 1과 2는 같은가?

  })

})

=================================

 

npm t

 

0 passing, 1 failing 확인 가능

1 != 2 이므로 FAIL

 

 

3. assert가 아닌 should 사용

index.spec.js

=======================================

const should = require('should')

 

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

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

    (1).should.equal(1)        // 1과 1은 같은가? > 영어 문장같은 느낌이라 직관적임

  })

})

=======================================

 

 

4. supertest 사용하기

index.spec.js

=======================================

const request = require('supertest')

const app = require('./index3')

 

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

  it('배열을 반환한다!!!', (done) => { // done은 mocha에서 지원하는 함수임

    request(app)

      .get('/users')

      .end((err, res) => {

        console.log(res.body)

        if (err) throw err

        done()

      })

  })

})

=======================================

 

// index3.js

=======================================

const express = require('express')

const app = express()

const users = [{name: 'Alice'}] // todo

app.get('/', function (req, res) {

res.send('Hello World with morgan!');

});

app.get('/users', (req, res) => {

res.json(users)

});

module.exports = app // express 객체를 외부에서 쓸 수 있도록

=======================================

npm t

입력시 정상 출력 확인 가능 -> TEST 정상 확인 완료

 

 

5. supertest와 should 함께 사용하기

index.spec.js

=======================================

const request = require('supertest')

const should = require('should')

const app = require('./index3')

 

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

  it('배열을 반환한다!!!', (done) => { // done은 mocha에서 지원하는 함수임

    request(app)

      .get('/users')

      .end((err, res) => {

        res.body.should.be.instanceof(Array)        // 해당 값이 Array인지

        res.body.forEach(user => {

        user.should.have.property('name') //        해당 값의 key값으로 name이 있는지 확인

        })

        if (err) throw err

        done()

      })

  })

})

=======================================

 

npm t

 

에러 없이 정상 1 passing 확인 가능

+ Recent posts