1

我正在用 Swift 编写一个 iOS 应用程序,我们正在使用 Parse 作为我们的后端。我正在进行一些验收测试,并使用OHHTTPStubs 模拟了 Parse API 。

我正在编写一个通过我们的登录表单并登录给定用户的测试。在视图控制器中,我们正在调用该PFUser.logInWithUsernameInBackground函数。在完成块内,我正在调用println(PFUser.currentUser()),我可以看到它设置正确。

但是,当我println(PFUser.currentUser())从测试用例中调用时,它仍然为零。我想确保用户正在登录,并且他们的用户名是正确的。

测试是注入宿主应用程序的应用程序测试,使用 KIF 编写。所以我认为测试可能包含他们自己单独的PFUser单例实例,而不是在主机应用程序上访问它。所以我需要弄清楚如何访问currentUser()主应用程序的内部。

有什么方法可以告诉我的测试使用PFUser主应用程序中的类吗?

如果您认为这通常应该开箱即用,我应该在我的代码中寻找什么样的错误?(例如桥接头、构建设置等)

4

1 回答 1

1

我想出了解决方案。我需要从主包中访问该类,我通过将此行添加到我的测试目标中的帮助文件中来做到这一点:

let AppUser: AnyClass! = NSBundle.mainBundle().classNamed("PFUser")

这让我可以在主包上而不是在测试包中执行诸如AppUser.currentUser() == nil, 和调用函数之类的检查。AppUser.signOut()

原因是主包和测试包是分开的,它们之间不共享类。这个 OHHTTPStubs wiki 页面更深入地介绍了 Xcode 中托管和非托管测试之间的区别。

于 2015-05-20T17:47:17.693 回答