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
   8   9   10   11   12   13   14   15   16   17   18