3

複数のクラスで、[NSApp delegate]いくつかのプロパティにアクセスしている場所からメインの AppDelegate を取得するために使用しています。これは期待どおりに機能していますが、これを使用するコードを単体テストすると、このデリゲートはnilになります。

テストでこれをどのように処理できますか? モックか何かを書くことは可能ですか?

4

1 に答える 1

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
于 2013-10-08T08:55:39.280 に答える