더북(TheBook)

그럼 타깃 함수엔 뭐가 들어갈까? 이 함수에서 나온 반환값은……? 어드바이스가 이 값을 도로 밖에 내놓아야 옳다.

targetObj.targetFnreturn 문을 넣으면 된다. argPassingAdvice가 타깃 호출 결과 받아온 값을 다시 반환하게 할 수도 있다. 지금까지 작성한 테스트는 전혀 반환값을 고려하지 않았으니 당연히 성공하겠지만, 테스트 대상은 성공할까? 예제 2-34는 이 질문에 답을 주는 테스트다(코드에는 나와 있지 않지만, targetObj.targetFn이 새 변수 targetFnReturn을 반환하도록 고쳤다).

예제 2-34 값을 잘 반환하는지 테스트

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

it("타깃의 반환값도 어드바이스에서 참조할 수 있다", function() {
Aop.around('targetFn', argPassingAdvice, targetObj);
var returnedValue = targetObj.targetFn();
expect(returnedValue).toBe(targetFnReturn);
});

그런데 또 실패한다(그림 2-9).

►그림 2-9

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