我正在使用Swift编写iOS应用程序,我们正在使用Parse作为后端。我正在进行一些验收测试,并使用OHHTTPStubs模拟了Parse API。
我正在编写一个测试,点击我们的登录表单并登录给定用户。在视图控制器中,我们调用PFUser.logInWithUsernameInBackground
函数。在完成块内,我正在调用println(PFUser.currentUser())
,我可以看到它设置正确。
但是,当我从我的测试用例中调用println(PFUser.currentUser())
时,它仍然是零。我想确保用户已登录,并且用户名是正确的。
测试是应用程序测试,它们被注入主机应用程序,并使用KIF编写。所以我认为测试可能包含自己独立的PFUser
单例实例,而不是在主机应用程序上访问它。所以我需要弄清楚如何访问主应用程序中的currentUser()
。
有什么方法可以告诉我的测试使用主应用程序中的PFUser
类吗?
如果你认为这通常是开箱即用的,我应该在代码中寻找什么样的错误? (例如桥接标题,构建设置等)
答案 0 :(得分:1)
我找到了解决方案。我需要从主包中访问该类,我通过将此行添加到测试目标中的帮助文件来实现:
let AppUser: AnyClass! = NSBundle.mainBundle().classNamed("PFUser")
这允许我执行AppUser.currentUser() == nil
之类的检查,并在主包上调用AppUser.signOut()
之类的函数,而不是在测试包中。
原因是主包和测试包是分开的,并且它们之间不共享类。 This OHHTTPStubs wiki page深入探讨了Xcode中托管和非托管测试之间的区别。