Skip to content

Instantly share code, notes, and snippets.

@JoshuaSullivan
Created December 18, 2018 21:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JoshuaSullivan/ec730a453f0a1c24642cbd014229aee5 to your computer and use it in GitHub Desktop.
Save JoshuaSullivan/ec730a453f0a1c24642cbd014229aee5 to your computer and use it in GitHub Desktop.
A guide to mocking objects with static methods...
protocol AnalyticsBackEnd {
static func log(_ name: String)
}
extension Analytics: AnalyticsBackEnd {}
class AnalyticsService {
let backEnd: AnalyticsBackEnd.Type
init(backEnd: AnalyticsBackEnd.Type = Analytics.self) {
self.backEnd = backEnd
}
func log(event: String) {
backEnd.log(event)
}
}
func testAnalyticsLogging() {
let subject = AnalyticsService(backEnd: MockAnalyticsBackEnd.self)
// Test...
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment