У меня есть приложение, которое связывается между iOS и watchOS, используя экземпляр WCSession
через мой собственный экземпляр WatchSessionManager
watchSessionManager
.WatchSessionManager
принимает протокол WCSessionDelegate
.
При нормальной работе используется WCSession.default
, но во время модульных тестов вместо этого MockWCSession
экземпляр mockWCSession
.mockWCSession
имеет delegate
, установленный на watchSessionManager
.
Чтобы проверить деактивацию сеанса наблюдения, watchSessionManager
вызывает функцию mockWCSession
deactivate()
, которая вызывает (среди прочего) своего делегата
func sessionDidBecomeInactive(_ session: WCSession)
, который определенв WCSessionDelegate
.
Проблема:
Поскольку WCSession
нельзя разделить на подклассы (нет доступных инициализаторов), MockWCSession
не относится к классу WCSession
ине может быть вставлен как параметр в sessionDidBecomeInactive
.(Конечно, можно использовать WCSession.default
в качестве параметра, но это было бы некрасиво).
Вопрос:
Можно ли как-нибудь вернуть mockWCSession
вsessionDidBecomeInactive