Reducing the need for mocksBasics article available: Unit Testing
When writing tests, you don't always need to create mocks - you can create stubs using real instances of things like errors, URLs and UserDefaults.
Here's how to do that for some common tasks/object types in Swift:
// Create errors using NSError (#function can be used to reference the name of the test) let error = NSError(domain: #function, code: 1, userInfo: nil) // Create non-optional URLs using file paths let url = URL(fileURLWithPath: "Some/URL") // Reference the test bundle using Bundle(for:) let bundle = Bundle(for: type(of: self)) // Create an explicit UserDefaults object (instead of having to use a mock) let userDefaults = UserDefaults(suiteName: #function) // Create queues to control/await concurrent operations let queue = DispatchQueue(label: #function)
Enter Manning’s September Showdown — a 30-day challenge that gives developers a chance to test their knowledge against their peers. A new trivia question, and a brand new prize to win, is published every day throughout September.