В проекте мы сталкиваемся со странной проблемой, когда prodocols не получает xcode.
Мы определили следующий протокол в обычном приложении:
protocol VCDismisser: class {
func dismiss(animated: Bool, completion: (() -> Void)?)
}
extension UIViewController: VCDismisser {}
Внутри случайного ViewController мы определяем:
class RandomVC: UIViewController {
lazy var vcDismisser: VCDismisser = self
}
В тестовой части XCProject мы хотим определить следующее:
class MockDismisser: VCDismisser {
var dismissCalled = false
func dismiss(animated: Bool, completion: (() -> Void)?) {
dismissCalled = true
}
}
И в любом тестовом примере для RandomVC мы хотим «внедрить» наш макет:
func testSuccessfulLoginDismisses() {
let dismisser = MockDismisser()
randomVC.vcDismisser = dismisser
randomVC.viewDidLoad()
mockviewModel.loggedIn.value = LoginState.successful
XCTAssertTrue(dismisser.dismissCalled)
}
XCode теперь получает симпатичные помешательства и всегда говорит нам:
Что мы здесь делаем неправильно и как мы можем исправить, что xcode принимает его как правильный тип?