ios - 将登录详细信息注入(inject) TwitterKit

标签 ios twitter twitter-fabric

我想向 TwitterKit iOS SDK 注入(inject)或伪造登录。我正在尝试为我的库(这是最重要的 Twitter API 的一种包装器)编写一些单元测试。

不幸的是,Fabric 要求用户设置系统帐户或显示 OAuth 屏幕。有没有办法伪造该登录以使我的测试 API 调用成功?

任何建议将不胜感激。

最佳答案

这取决于您尝试编写的测试类型以及您是否真的在测试期间尝试发出网络请求。

如果您正在编写必须通过登录流程工作的集成测试,那么完成此操作的最简单方法就是将一个帐户添加到 ACAccountStore。通过创建您自己的ACAccountCredential .这种方法的一个缺点是它会在后台进行由系统管理的网络调用,因此无法拦截/模拟它,这可能会使您的测试变得不稳定。一旦您将该帐户添加到商店,每当您尝试通过登录流程时,它就会被拾取。

如果您使用 -[TWTRAPIClient sendTwitterRequest:completion:] 发出网络请求方法,并且您实际上需要在这些调用期间登录,因为您正在尝试访问 Twitter API,您可以将 session 添加到 TWTRSessionStore直接调用[TWTRSessionStore saveSessionWithAuthToken:authTokenSecret:completion:] .同样,此方法将进行难以模拟/拦截的网络调用,但如果您在测试期间发出实际的网络请求,这并不重要。

如果您正在编写不需要发出网络请求的单元测试,但您需要在 TWTRSessionStore 中有一个 session 您可以直接将 session 保存在TWTRSessionStore .您可以调用-[TWTRSessionStore saveSession:withVerification:completion:]使用您创建且未经验证的 session 。请注意,此方法是私有(private)的,如有更改,恕不另行通知。话虽如此,我真的不明白为什么我们会很快改变它,所以它应该对你来说是安全的。

如果这些都不适合您,请让我更具体地知道您要完成的工作,我可以建议其他选择。

关于ios - 将登录详细信息注入(inject) TwitterKit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34767023/

相关文章:

iOS 单元测试失败 - 无法访问 KeyChain

ios - 如何在 iOS 应用程序中使用 fabric 注销 twitter

swift - 如何在 Swift 中通过 Firebase Twitter 方法对 Digits 用户进行身份验证?

python - 如何从 pickle 文件中获取数据到 pandas 数据框中

android - 百分号导致 Twitter 应用程序崩溃

android - 无需身份验证即可获取 Twitter 主页时间线(仅应用程序身份验证)

ios - 在 Debug模式下禁用结构答案

iOS Metal : Unable to create compute pipeline state with function

ios - CosmicMind/Material - 如何在 NavigationDrawerController 中调用 pushViewController?

ios - iPad Swift Playgrounds 共享空白 .playgrounds 文件