Skip to content

Instantly share code, notes, and snippets.

@colinfwren
Created January 24, 2025 23:54
Show Gist options
  • Save colinfwren/d908d36648b55026e9aa6910e50d8af9 to your computer and use it in GitHub Desktop.
Save colinfwren/d908d36648b55026e9aa6910e50d8af9 to your computer and use it in GitHub Desktop.
An example of tests using the mock
import Testing
@testable import ExampleApp
@Suite("Example Service Test") struct ExampleServiceTest {
@Test("Restores from UserDefaults") func restoreValues() throws {
// setup
let classToBeStored = SomeClass(foo: "bar")
let dataToStore = try? JSONEncoder().encode(classToBeStored)
let mockUserDefault = MockUserDefault()
mockUserDefault.set(dataToStore, forKey: "someKey")
// test
let service = ExampleService(userDefaults: mockUserDefaults)
#expect(service.aStoredClass == classToBeStored)
}
@Test("Uses default when note stored") func usesDefaults() throws {
// setup
let mockUserDefault = MockUserDefault()
// test
let service = ExampleService(userDefaults: mockUserDefaults)
#expect(service.aStoredClass == SomeClass())
}
@Test("Saves values when doSomething method called") func savesValues() throws {
// setup
let classToBeStored = SomeClass(foo: "bar")
let dataToStore = try? JSONEncoder().encode(classToBeStored)
let mockUserDefault = MockUserDefault()
mockUserDefault.set(dataToStore, forKey: "someKey")
// test
let service = ExampleService(userDefaults: mockUserDefaults)
let newValue = SomeClass(foo: "Buzz")
service.doSomething(newValue: newValue)
let savedValue = try? JSONDecoder().decode(SomeClass.self, from: mockUserDefaults.persistedValue!)
#expect(savedValue == newValue)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment