깃허브 레포지토리 링크
https://github.com/ryong9rrr/node-value-test
GitHub - ryong9rrr/node-value-test: nodejs에서 간단한 값을 테스트하기 위한 툴
nodejs에서 간단한 값을 테스트하기 위한 툴. Contribute to ryong9rrr/node-value-test development by creating an account on GitHub.
github.com
현재 자바스크립트 코드로 자료구조를 구현하고 있다. 자료구조를 구현하면서, 만든 메소드들을 하나하나 테스트하기가 너무 불편하기도 하고, 메소드들이 많아질수록 예상치 못한 버그가 생길 것 같아 테스트 툴을 만들어봤다.
nodeJS 모듈시스템과 간단한 함수형 프로그래밍을 이용한 자바스크립트 파일이다. (사실 tool이라고 하기도 뭐한...)
[1] 테스트를 위한 함수
describe
테스트 코드 tool에 빠지지 않는 함수이다. 보통 첫번째 인자로는 제목을, 두번째 인자로 콜백함수를 받기 때문에 아래와 같이 간단히 함수를 만들 수 있다.
function describe(title, callback) {
console.log(title);
callback();
}
그러면 사용하는 쪽에서는 아래와 같이 사용할 수 있다.
function test_SimpleQueue() {
describe("<-----간단한 큐 테스트----->", () => {
const q = new SimpleQueue();
describe("큐가 비었을 때 size", () => {
should(q.size, 0);
});
}
describe가 실행되는 컨텍스트를 이용해서 테스트를 하는 구조이다.
should
값을 비교하는 함수가 반드시 있어야 한다. 기능을 더 추가하면 좋겠지만, 단순히 '값'만을 비교하는 함수이다. 아래와 같이 간단하게 동등비교를 한다.
function should(compare, expected) {
return console.log(compare === expected);
}
[2] 테스트를 위한 파일 디렉토리 설정
내가 만들면서도 이 부분이 가장 귀찮은 부분이었다... (사실상 이 툴의 모든 것) 폴더 디렉토리는 아래와 같이 구성된다.
.bin +--- common.js // describe, sholud 함수가 작성되어있는 파일
js +--- example.js // 실제 구현한 파일
test +--- example.spec.js // example.js를 위한 테스트 코드를 적는 파일,
example.js를 불러온다.
common.js를 불러온다.
+--- test.spec.js // 테스트를 실행시킬 파일, example.spec.js를 불러온다.
그래서 require(파일경로) 를 잘 적어주는 것이 중요하다. (제일 귀찮...)
[3] 테스트 진행
현재 package.json의 경로를 node test/test.spec.js 로 설정해주었기 때문에 npm test를 하면 test.spec.js가 실행된다.
글 맨 처음의 깃허브 레포지토리로 들어가서 확인해보면 레포지토리 안에 간단한 큐를 구현한 js/example.js와 테스트를 하기 위한 예제 test/example.spec.js 를 넣어두었다.
클론을 한 뒤 터미널에서 npm test를 입력하면 test/test.spec.js가 실행되면서 콘솔에 아래와 같은 결과를 출력한다.
<-----간단한 큐 테스트----->
큐가 비었을 때 size
true
큐가 비었을 때, 맨 앞에 요소 peek
true
1을 enqueue
true
true
dequeue
true
true
true
큐가 비어있다면 dequeue는 null을 반환한다.
true
true
true
💡 느낀 점
파일 경로를 적어주는 것이 귀찮기는 하지만, 일단 세팅을 해놓으면 맘 놓고 편안하게 TDD를 할 수 있다.. ㅋㅋ
nodeJS 모듈과, 간단한 함수형 프로그래밍을 이용해서 만들어보았는데 은근히 배운 것이 많았다. (모듈, 컨텍스트)
이제부터 본격적으로 자료구조를 구현하면 될 것 같다.