如何在测试用例中使用AppDelegate?

时间:2013-10-08 08:35:02

标签: objective-c macos xcode5 appdelegate xctest

在多个类中,我使用[NSApp delegate]从我访问某些属性的地方获取主AppDelegate。这是按预期工作的,但当我单元测试使用它的代码时,此委托是 nil

我如何在测试中处理此问题?是否可以写一个模拟或什么?

1 个答案:

答案 0 :(得分:3)

创建一个单独的单例类,可用于存储全局属性,并让App Delegate执行其委派角色,仅此而已:

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:

@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