Reducing the need for mocksDiscover page 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)
Support Swift by Sundell by checking out this sponsor:
Bitrise: My favorite continuous integration service. Automatically build, test and distribute your app on every Pull Request — which lets you quickly get feedback on each change that you make. Start 2021 with solid continuous integration from Bitrise, using hundreds of ready-to-use steps.