Привет @ Pradeep ?, добро пожаловать в StackOverflow.
Исходя из того, как вы описываете сбои, которые вы испытываете, я предполагаю, что ваши методы @IBOutlet
s в UIViewController
, это правильно?
Если это так, вы можете сделать так, чтобы тесты инициализировали представление UIViewController
, выполнив что-то вроде перед , вызвав методы, которые зависят от доступности представления:
_ = viewControllerUnderTest.view
или
viewControllerUnderTest.beginAppearanceTransition(true, animated: false)
Этот - достойный пост, чтобы узнать больше о возможностях тестирования UIViewController
s, , в этом есть более продвинутый подход, который может помочь вам, если вы в конечном итоге много напишите тестов с зависимостями от вида, как вы описали.
Я бы посоветовал вам хранить как можно больше кода бизнес-логики, начиная с UIViewController
с и UIView
с. Жизненный цикл этих классов усложняет их тестирование, и чем проще вы можете сделать что-то для тестирования, тем лучше.
Напишите всю свою бизнес-логику в выделенных class
es и struct
s, их будет проще протестировать, если они не подклассифицируют другие типы. Используйте UIViewController
s только в качестве связующего кода, чтобы показывать данные пользователю и направлять их входные данные в вашу бизнес-логику, так что вам придется написать только несколько простых тестов. Оставьте UIView
s скромным , только для логики их настройки.
( Если мое UIViewController
предположение было неверным, пожалуйста, добавьте больше деталей, и мы найдем способ, чтобы ваши тесты не вылетали. )