我有一个OS X应用程序,它在启动时从服务器加载一些数据并将通知推送到NSUserNotificationCenter
。 现在我有这个问题,这也发生在我的单元测试。我发现还没有办法阻止这一点。当然,我可以存根HTTP负载。但在某些情况下,我想测试加载,然后发送通知。Swift:如何在测试期间不加载AppDelegate
我想要做的是使测试运行不加载AppDelegate
但我只用于测试的假的。我在UIApplicationMain
上找到了几个关于如何做到这一点的例子[1],在这里你可以传递一个特定的AppDelegate类名。 NSApplicationMain
[2]也是不可能的。
我已经试过如下:
从AppDelegate.swift
删除@NSApplicationMain
,然后添加一个main.swift
具有以下内容:
class FakeAppDelegate: NSObject, NSApplicationDelegate {
}
NSApplication.sharedApplication()
NSApp.delegate = FakeAppDelegate()
NSApplicationMain(Process.argc, Process.unsafeArgv)
此代码测试之前运行,但没有任何效果可言。我可能不得不说:我的AppDelegate几乎是空的。为了处理MainMenu.xib的东西,我做了一个单独的视图控制器,它在awakeFromNib
中执行实际的加载和通知。
[1] http://www.mokacoding.com/blog/prevent-unit-tests-from-loading-app-delegate-in-swift/