2012-01-18 5 views
1

MyService의 객체를 myMethod에 삽입하는 것이 더 좋고 더 관용적이므로 MyService의 가짜 버전을 테스트 용으로 주입 할 수 있습니까? 또는 나는 무엇인가 놓치고 있냐?관용구 자바 스크립트 의존성 그래프

var myObject = { 
    myMethod: function() { 
    var myService = new MyService(); 
    return myService.doSomething(); 
    } 
} 

답변

1

종속성 삽입은 항상 종속성을 하드 코딩하는 것보다 우선합니다. 또한 인터페이스를 코딩하여 (myObject 인스턴스에 doSomething() 메소드가있는 서비스 객체 복사본이 제공되었다고 가정하면) 여기에 편리하게 올 수 있습니다.

+0

"인터페이스"로 'MyService'의 프로토 타입이 '서비스'로 설정되었다는 것을 의미하는 것으로 추정됩니까? JS에서 메소드가 동적으로 변경 될 수 있다는 점을 감안할 때,이 방법의 장점은 내 테스트에서'doSomething'을 단순히 재 정의하는 것입니다. – Ben

+0

정확합니다. 성능 향상이 없습니다. 독자가 계약 (인터페이스)을 이해하고 구현 내부의 논리를 따르도록 허용함으로써 프로그램을 더 읽기 쉽게 만듭니다. –

+0

오케이. 당신의 도움을 주셔서 감사합니다. – Ben

관련 문제