複数のクラスで、[NSApp delegate]
いくつかのプロパティにアクセスしている場所からメインの AppDelegate を取得するために使用しています。これは期待どおりに機能していますが、これを使用するコードを単体テストすると、このデリゲートはnilになります。
テストでこれをどのように処理できますか? モックか何かを書くことは可能ですか?
複数のクラスで、[NSApp delegate]
いくつかのプロパティにアクセスしている場所からメインの AppDelegate を取得するために使用しています。これは期待どおりに機能していますが、これを使用するコードを単体テストすると、このデリゲートはnilになります。
テストでこれをどのように処理できますか? モックか何かを書くことは可能ですか?
グローバル プロパティを格納するために使用できる個別のシングルトン クラスを作成し、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