Aug 31, 2018 · 1 min read
Just as an option, we could confirm DispatchQueue to the protocol like
protocol CompletionContext { func execute(completion: @escaping () -> Void)}extension DispatchQueue: CompletionContext { func execute(completion: @escaping () -> Void) { async(execute: completion) }}
And having main queue to be injected as default parameter like
class ViewModel { let completionContext: CompletionContext init(completionContext: CompletionContext = DispatchQueue.main) { self.completionContext = completionContext }}