我正在使用Swift 2.2和Xcode 7.3
基本上,我有一个生成UIlocalnotification的精简API,它通过UIApplication.sharedApplication()触发.presentlocalnotificationNow
在我的AppDelegate中,我实现了应用程序:dIDReceivelocalnotification方法,以显示UIAlertController,如下所示
func application(application: UIApplication,dIDReceivelocalnotification notification: UIlocalnotification) { if application.applicationState == .Active { var topController : UIVIEwController = (application.keyWindow?.rootVIEwController)! while ((topController.presentedVIEwController) != nil) { topController = topController.presentedVIEwController! } let alert = UIAlertController(Title: notification.alertTitle,message: notification.alertbody,preferredStyle: UIAlertControllerStyle.Alert) alert.addAction(UIAlertAction(Title: "Ok",style: UIAlertActionStyle.Default,handler: {(action: UIAlertAction!) in})) topController.presentVIEwController(alert,animated: true,completion: nil) }}
手动运行时,这很好.我可以看到生成的消息和警报显示.
我想做的是提供一个单元测试来验证这个功能.
我测试iOS的经验是不存在的.
我的第一个想法是以某种方式模拟UIApplicationDeledgate所以我可以测试是否调用了应用程序:dIDReceivelocalnotification,类似于UIApplication.sharedApplication().委托= mockedDelegate,当我试图这样做时它崩溃了.
我的下一个想法是使用UI测试和监视器进行警报对话框.这工作到了一定程度,我能够注册通知(并获得“允许通知”对话框,我可以使用XCTestCase API轻松通过),但通知显示为横幅,而不是警报(从应用程序本身内部)!?
在这一点上,我不知道接下来要尝试什么.
我目前没有使用任何模拟框架,我的理解是Swift并不适合他们,但这只是我的阅读(除非我愿意从NSObject扩展).
解决方法 您可以通过创建本地通知并在测试中直接调用它来测试委托方法,如下所示:let notification = UIlocalnotification()notification.alertbody = "Attention!"var userInfo = [String: String]()userInfo["name"] = "notification"notification.userInfo = userInfo// further notification setuplet appDelegate = UIApplication.sharedApplication().delegateappDelegate?.application!(UIApplication.sharedApplication(),dIDReceivelocalnotification: notification)
您可以类似地调用其他委托方法来测试通知 *** 作等.
总结以上是内存溢出为你收集整理的ios – 单元测试本地通知全部内容,希望文章能够帮你解决ios – 单元测试本地通知所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)