Page 13 - 006963
P. 13
1
Note 자바스크립트 자체 테스트
여러분이 굉장히 구체적인 구현 세부 사항을 테스트하고 있다면, 어느 순간부터 더 이상 프로그램을 테스트하는 것이
아니라 자체 환경을 테스트한다는 것을 깨닫게 됩니다. 나중에 자세하게 살펴보겠지만 지금 여러분은 노드 콘솔을 실 리팩토링이란?
행하고 저장할 수 있어야 하고, node file_name.js 명령어를 실행할 수 있으면 충분합니다. 따라서 자세한 구현과
관련된 구체적인 테스트는 지금 시점에서는 중요하지 않습니다.
다음 테스트를 진행한다고 가정합시다.
assert = require('assert');
assert(2 + 2 === 4);
첫 번째 줄은 여러분이 노드 콘솔에서 작업한다면 끔찍한 결괏값을 보여 줍니다. 하지만 걱정하지 마세요. 단지 어떤
것을 불러왔는지 보여 줄 뿐입니다. 또 노드 콘솔은 이미 assert 함수를 가지고 있습니다. 그러니 js 파일에서 작업하
지 않는다면 첫 번째 줄은 생략할 수 있습니다. 두 번째 줄 결과는 이상하게 undefined라고 출력됩니다. 이것 또한
정상입니다. assert(3 === 2)처럼 참이 아닌 것은 오류가 발생할 수 있습니다.
이처럼 테스트를 진행한다면, 이것은 숫자나 + 연산자, === 연산자처럼 자바스크립트 자체를 테스트하는 것입니다.
여러분은 비슷하게 자체 테스트 라이브러리(참조 문서)를 자주 발견할 수 있을 것입니다.
_ = require('underscore');
assert(.first([3, 2]) === 3);
이것은 언더스코어 라이브러리(underscore library)가 기대한 대로 작동하는지 확인하는 테스트입니다. 이러한 저
수준 구현 세부 사항을 테스트하는 것은 새로운 라이브러리(참조 문서) 또는 익숙하지 않은 자바스크립트 부분을 알아
볼 때는 유용합니다. 일반적으로 패키지 자체에 있는(좋은 라이브러리는 좋은 테스트를 가지고 있습니다) 테스트에 의
존하는 것으로도 충분합니다. 그러나 두 가지 주의할 점이 있습니다. 첫째, ‘온전한 테스트’는 여러분 환경을 안정화시
킨 이후라도 필요하지 않은 일부 기능이나 라이브러리(참조 문서)를 제공할 수 있어야 합니다. 둘째, 여러분이 만든 코
드에 자신감을 가지려고(나중에 더 설명하겠습니다) 테스트를 작성하는 중이라면, 라이브러리(참조 문서) 동작을 테스
트하는 것은 코드가 제대로 작동하는지 보여 주는 데 적합해야 합니다.
1.3 Refacto R ing JavaSc R ipt
불특정하고 검증되지 않은 동작에
관심을 두면 어떨까?
우리가 코드를 구체화하고 검증하는 정도는 말 그대로 해당 동작에 관심을 보이려는 노력입니다.
실행 테스트나 수동 절차, 어떻게 동작하는지 최소한의 설명이 없으면 기본적으로 해당 코드를 검
증할 수 없다는 것을 의미합니다.
029
리팩토링 자바스크립트(본문)최종.indd 29 2018-09-19 오전 1:31:09