2013-10-08 5 views
3

여러 클래스에서 일부 속성에 액세스하는 곳에서 내 기본 AppDelegate를 얻으려면 [NSApp delegate]을 사용하고 있습니다. 이것은 예상대로 작동하지만, 단위 테스트이 코드를 사용하는 코드는 입니다.AppDelegate를 테스트 케이스에서 사용하는 방법은 무엇입니까?

테스트에서 어떻게 처리 할 수 ​​있습니까? 모의 또는 무언가를 쓸 수 있습니까?

AppProperties.h :

@interface AppProperties : NSObject 

@property (strong, nonatomic) NSString *prop1; 
@property (strong, nonatomic) NSNumber *prop2; 
@property (strong, nonatomic) NSMutableArray *prop3; 

+ (AppProperties *)sharedInstance; 

@end 

AppProperties.m을

+0

어떤 속성이 있습니까? 그것은 그들이 App Delegate 이외의 다른 클래스에 있어야 할 필요가있는 것처럼 들립니다. 아마도 싱글 톤 모델을 사용합니다. – trojanfoe

+0

예를 들어 사용자 정의 * UserSettings * 속성이 있습니다. 당신 말이 맞습니다. 어쩌면이 자산을 다른 곳에 두는 것이 합리적 일 수도 있습니다. AppDelegate는 어디서나 액세스 할 수있는 전역 클래스로만 표시되므로 전역 데이터를 저장하기에 적합합니다. – dhrm

+0

이 경우 앱의 대리인이 이러한 속성을 저장하는 역할을하지 않는 다른 클래스를 갖는 것이 편리합니다. 이동 및 구현이 쉬워야합니다. – trojanfoe

답변

3

별도의 싱글 톤 클래스를 만들고, 그보다 대표단의 역할과 아무것도 할 전역 속성을 저장하고 응용 프로그램 위임을 떠날 수 있습니다 :

@implementation AppProperties 

@synthesize prop1, prop2, prop3; 

+ (AppProperties *)sharedInstance { 
    static AppProperties *instance = nil; 
    static dispatch_once_t onceToken = 0; 
    dispatch_once(&onceToken, ^{ 
     instance = [[AppProperties alloc] init]; 
    }); 
    return instance; 
} 

@end 
관련 문제