ios - Swift - 单元测试中的依赖注入(inject)

标签 ios iphone swift unit-testing

这是我第一次在 swift 中使用依赖注入(inject),我就是这样做的,我有一个在 appDelegate 中初始化的数据管理器,然后传递给我的第一个 View Controller 女巫,然后每次它们都会传递给其他 View Controller 被推到屏幕上:

  if let navigationCtrl = window?.rootViewController as? UINavigationController {

        if let firstViewController = navigationCtrl.topViewController as? FirstViewController {
            firstViewController.dataManager = dataManager
        }
    }

现在这样做,一切都很好,但是当我去测试每个 View Controller 时,我总是得到 dataManger 为 nil,我知道这是因为我首先给出的条件。那么有没有办法确保 topViewController 始终具有 dataManager 变量而不从另一个 ViewController 继承。谢谢

最佳答案

其中一个正在发生:

  • windownil
  • window?.rootViewController 不是 UINavigationController
  • navigationCtrl.topViewController 不是 FirstViewController
  • firstViewController.dataManagernil

这应该是一个简单的调试。放置一些断点和/或 print 语句以了解问题出在哪里。

提示:

  • 确保在 XCode/Interface-Builder 中正确设置 View Controller 的类。

关于ios - Swift - 单元测试中的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50238840/

相关文章:

ios - 如何在特定时间内使按钮在iOS中突出显示?

php - 使用 PHP 发件人和 Swift 在后台未收到 IOS GCM 推送通知

android - Xamarin 表单-System.Data.Sqlite

iPhone 应用程序在操作系统 3.1 的设备上崩溃,而不是在模拟器中

iphone - 动画 UIButton 背景图像

ios - 是否可以使用NSTimer将越狱的iPhone从深度 sleep 中唤醒?

ios - 在 iOS 中使用照片保存位置 exif 数据

swift - Swift 中的视频合并方向

iphone - 找到多个名为 'tag' 的方法

ios - 字符串下标耗时长