objective-c - 如何在测试用例中使用 AppDelegate?

标签 objective-c macos xcode5 appdelegate xctest

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

我该如何在测试中处理这个问题?是否可以编写模拟或其他内容?

最佳答案

创建一个单独的单例类,可用于存储全局属性,并让 App Delegate 执行其委托(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

关于objective-c - 如何在测试用例中使用 AppDelegate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19242843/

相关文章:

java - 丢失的 OS X Java 源代码

ios7 - 在 Xcode 5 中修改 Storyboard后如何同步本地化 Storyboard的字符串

ios - Apple Mach-o Linker 错误 Undefined symbols for architecture i386 :

ios - 从自定义 UITableViewCell 和 UIViewController 传递数据

ios - 从 iOS 应用程序在 Tumblr 上分享链接

ios - 自定义 UITableViewCell 的布局何时完成?

objective-c - Interface Builder 生成的 NSIBPrototypingLayoutConstraint 自动布局约束的 iOS7 问题

objective-c - (Cocoa) 单窗口 Cocoa 应用程序中的 UIViewController 子类等效于什么?

macos - 如何检查应用程序是否通过 MAC OS 中的 Automator 打开?

c - Learning Core Audio 第 8 章示例未运行