2012-07-18 2 views
1

iOS 애플리케이션을 개발하는 동안 드디어 내 코드를 테스트하기 시작했습니다. 그러나 다른 사람들이 테스트 가능한 코드를 작성하는 방법에 대해 더 많이 듣고 싶습니다. 특히 테스트중인 클래스에 위조 된 객체를 주입 할 때 더욱 그렇습니다. 지금까지이 방법을 사용합니다 :iOS에서 단위 테스트를 할 때 적절한 의존성 주입

// 1) 가짜 생성자 CUT (생성자 삽입) A * a = [[A alloc] initWithB : C : D : .....];

// 2) 속성으로 종속성 공개 (속성 삽입) a.B = myB;

내가 정말로 필요하지 않으면 속성으로 내부 데이터를 노출하고 싶지 않으므로 1)을 선호합니다.

내 질문은 : objective-c 및 iOS 테스트 프레임 워크를 다룰 때 속성 주입을 할 수있는 다른 방법이 있습니까?

답변

0

지금은 꽤 오래되었지만 질문을 한 후에 다른 솔루션으로 작업 할 수있는 기회가있었습니다. 이제는 대부분의 경우 조합을 선호합니다. 클래스 A가 클래스 B에 의존하는 경우, I가 같은 B의 인스턴스와을 초기화하기 것이다 :

이 외에도
A* myA = [[A alloc] initWithB:myB]; 

, I는 속성으로서 B 노출 것이다가 런타임에 전환 할 수 있도록 . 어떤 경우에는 인터페이스 패턴이 더 좋을 수도 있습니다.

- (id)initWithBy:(id<bProtocol>)aB; 

이것은 분명히 모든 상황에 적합하지 않습니다,하지만 난 그것을 내 수업에 종속성을 주입함으로써 그들이 더 쓸만한 만드는 좋은 방법을 발견했다.