1 min readNov 28, 2018
I wouldn’t consider my previous code as a workaround by the way…
Regarding your issue, this is the only solution I can provide:
class MyScreen:Screen {}
class OtherScreen:Screen {}final class NavigatorStub: Navigator {
// MARK: - Stubs
lazy var showMyScreenStub = stub(of: showMyScreen)
lazy var showOtherScreenStub = stub(of: showOtherScreen) // MARK: - API
func showMyScreen(_ screen: MyScreen) {
showMyScreenStub(screen)
} func showOtherScreen(_ screen: OtherScreen) {
showOtherScreenStub(screen)
} func show<ScreenType: Screen>(_ screen: ScreenType) {
if let screen = screen as? MyScreen {
showMyScreen(screen)
return
}
if let screen = screen as? OtherScreen {
showOtherScreen(screen)
return
}
fatalError()
}
}