Swift - Внедрение зависимостей в модульном тесте - PullRequest
0 голосов
/ 08 мая 2018

Это первый раз, когда я работаю с внедрением зависимостей в swift, вот как я это делаю, у меня есть dataManager, который инициализируется в appDelegate, затем передается моему первому контроллеру представления, а затем передается другим контроллерам представления каждый раз, когда они попасть на экран:

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

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

Теперь, делая это, все работает отлично, но когда я иду тестировать каждый контроллер представления, я всегда получаю dataManger равным нулю, и я знаю, что это из-за условия, которое я поставил в первую очередь. Поэтому есть способ убедиться, что topViewController всегда имеет переменную dataManager без наследования от другого ViewController. Спасибо

1 Ответ

0 голосов
/ 08 мая 2018

Происходит одно из них:

  • window - это nil
  • window?.rootViewController не является UINavigationController
  • navigationCtrl.topViewController не является FirstViewController
  • firstViewController.dataManager является nil

Это должна быть простая отладка. Либо поставьте несколько точек останова и / или print операторов, чтобы узнать, в чем проблема.

Совет (ы):

  • Убедитесь, что класс контроллера представления установлен правильно в XCode / Interface-Builder.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...