在iOS应用程序测试期间,如何访问主机应用程序中的单例实例?
我正在用Swift编写一个iOS应用程序,我们的后端使用Parse。我正在进行一些验收测试,并使用 我正在编写一个测试,通过我们的登录表单并登录到给定的用户。在视图控制器中,我们调用在iOS应用程序测试期间,如何访问主机应用程序中的单例实例?,ios,swift,testing,xctest,kif,Ios,Swift,Testing,Xctest,Kif,我正在用Swift编写一个iOS应用程序,我们的后端使用Parse。我正在进行一些验收测试,并使用 我正在编写一个测试,通过我们的登录表单并登录到给定的用户。在视图控制器中,我们调用PFUser.logInWithUsernameInBackground函数。在completion块中,我调用了println(PFUser.currentUser()),我可以看到它设置正确 然而,当我从测试用例调用println(PFUser.currentUser())时,它仍然是零。我想确保用户正在登录,并
PFUser.logInWithUsernameInBackground
函数。在completion块中,我调用了println(PFUser.currentUser())
,我可以看到它设置正确
然而,当我从测试用例调用println(PFUser.currentUser())
时,它仍然是零。我想确保用户正在登录,并且他们的用户名是正确的
这些测试是应用程序测试,注入到主机应用程序中,并使用KIF编写。因此,我认为这些测试可能包含各自独立的PFUser
singleton实例,而不是在主机应用程序上访问它。因此,我需要弄清楚如何在主应用程序中访问currentUser()
有什么方法可以让我的测试使用主应用程序中的PFUser
类吗
如果您认为这应该是开箱即用的,那么我应该在代码中查找哪些错误?(例如桥接头、构建设置等)我找到了解决方案。我需要从主捆绑包访问该类,为此,我将此行添加到测试目标中的帮助文件中:
let AppUser: AnyClass! = NSBundle.mainBundle().classNamed("PFUser")
这使我可以在主捆绑包上而不是在测试捆绑包中执行检查,如AppUser.currentUser()==nil
,并调用函数,如AppUser.signOut()
原因是主捆绑包和测试捆绑包是分开的,它们之间不共享类。深入讨论Xcode中托管测试和非托管测试之间的区别。发布代码将有助于回答此问题。对不起,我不知道发布什么。我绝对不想发布整个源代码,因为它是私有的。您希望具体看到什么代码?请注意,我在这里发现了一些关于非托管测试和托管测试之间差异的有趣信息:我认为这是一个非常类似的问题(我的测试包有自己的PFUser实例)。我不太清楚为什么人们对这个问题投了反对票。也许这太晦涩或技术性了。不管怎样,我希望这对将来的人有所帮助。