TDD(5)
-
[Node.js] TDD를 이용하여 API 서버를 개발해보자.
들어가며 다음과 같은 경험과 배경지식이 있다면, 이번 포스팅 글을 어렵지 않게 읽을 수 있습니다. ES6 문법, ExpressJS를 써본 경험 모카(MochaJs), 슈드(ShouldJs), 슈퍼 테스트(SupertestJs)를 써본 경험 TDD의 정의와 목적 Babel 컴파일러 설치 및 사용 경험 API(Application Programming Interface) API란 무엇일까? API는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 말한다. 이상 위키피디아에서 나온 정의였다. 우리는 위키피디아 정의에서 인터페이스의 정의에 대해 생각해 볼 필요가 있다. 네이버 영영사전에서 기록된 인터페이스(Interface)의 뜻은 접속기다...
2020.11.04 -
[Node.js] 목록 조회 API 테스트 코드 만들기
지난 포스팅에서 슈퍼테스트(Supertest)를 이용해서 만든 테스트 코드가 잘 작동되는지 확인해보았다. 이번 포스팅에서는 본격적으로 테스트 코드에 맞게 API를 개선해 보는 코드를 만들려고 한다. 이번 포스팅에서 해볼 내용은 다음과 같다. 슈퍼테스트(Supertest)와 슈드(ShouldJs)를 같이 다뤄본다. limit라는 쿼리 속성을 추가하여, 원하는 만큼의 데이터를 가져온다. limit 속성 값이 Number형이 아닐 경우, Status 코드 400번을 보내는 실패 케이스를 만들어본다. 먼저, server.js라는 파일을 생성해서 다음과 같이 코드를 입력해보자. import express from "express"; const obj = [ { id: "cheonyulin", name: "천유린"..
2020.11.03 -
[Node.js] 슈퍼 테스트(Super Test)
슈퍼 테스트(Super Test) 모카(Mochajs), 슈드(shouldJs)를 다룬 포스팅에서는 메서드 레벨의 단위 테스트를 다루었다. 단위 테스트란, 가장 작은 단위를 테스트한다는 것으로 즉각적인 피드백이 나온다는 장점이 있다. 하지만, 하나의 메서드가 잘 동작하는 것은 보장할 수 있지만, 그들이 결합되었을 때도 잘 작동한다는 보장 할 수 없다. 이번에 포스팅할 슈퍼테스트는 통합 테스트에 사용된다. 통합 테스트란, API의 기능을 테스트 하는 것으로 API 기능 뿐만 아니라 여러 개(외부 라이브러리도 포함)를 통합해서 테스트하는 것을 말한다. 슈퍼테스트는 ExpressJS 통합 테스트용 라이브러리로 내부적으로 익스프레스 서버를 구동시켜 실제 요청을 보낸 뒤 결과를 검증한다. 따라서 이번 포스팅에서는..
2020.11.03 -
[Node.js] Should.js 란
1. Should.js 란 지난 번에 Mocha.js에 대해서 포스팅한 적이 있다. 모카(Mocha.js)는 테스트 주도 개발을 할 수 있는 대표적인 자바스크립트 프레임워크다. 하지만 모카(Mocha.js)를 쓰기 위해서는 node_modules 폴더 안에 있는 assert 모듈을 불러와야한다. Should.js 프레임워크도 모카(Mocha.js)와 다른 것이 없지만, 다른 점이 있다면 여러가지 Assertion 함수를 지원한다는 것이다. 즉, assert 모듈을 불러오지 않아도 된다. Should.js를 쓰기위해서는 먼저 프레임워크를 설치해야한다. npm install should --save--dev yarn add should --dev 바벨 컴파일러, package.json에서의 scripts 속..
2020.10.31 -
[Node.js] 모카(Mocha)
1. 테스트 주도 개발(TDD) 테스트 주도 개발은 Test Driven Development의 약자로 TDD라고 표기한다. 테스트 주도 개발은 테스트 코드를 작성해서, 코드를 하나씩 통과시켜서 만드는 개발방법을 말한다. [그림 1]은 프로그래머스라는 사이트에서 알고리즘 문제를 풀고나서 체점한 결과를 나타낸다. 체점 시, 통과 또는 실패라는 결과가 뜨는 이유는 여러 테스트 케이스와 결과 값을 준비했기 때문이다. 테스트케이스를 입력으로 넣고, 출력 값이 예상된 결과 값과 같을 경우는 통과 다를 경우는 실패로 간주한다. 이처럼 테스트 주도 개발은 함수가 개발자의 의도대로 잘 작동하는지, 버그는 있는지를 체크하거나, Api 서버를 만들 때와 같이 여러 상황에서 사용할 수 있다. 용도는 다양하게 쓸 수 있어도 ..
2020.10.27