더북(TheBook)

테스트 결과는 실패다(그림 2-8).

►그림 2-8

 

실패는 곧 코딩을 더 해야 한다는 뜻이니 TDD 개발자는 흐뭇하다. 어드바이스에 전달된 객체에 args: arguments를 보태자(예제 2-33).

예제 2-33 타깃에 인자를 전달

소스 파일 2장\AOP\Aop_03.js

Aop = {
around: function(fnName, advice, fnObj) {
  var originalFn = fnObj[fnName];
  fnObj[fnName] = function () {
    var targetContext = {}; // 잘못되었다, 나중에 다시 설명한다.
    advice.call(targetContext,{fn:originalFn, args:arguments});
  };
}
};

기성 개발자들은 전 기능을 아우르는 테스트를 떠올릴지 모른다. 여기서는 달랑 코드 한 줄에서 사용한, 한 객체의 한 프로퍼티만 처리하는 테스트를 썼고, 더구나 테스트를 작성하기 전, 코드는 아예 한 조각도 나오지 않았다. 테스트 주도 개발의 이상적인 형태란 바로 이런 것이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.