-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
Labels
Description
A recent issue in the tests and @dvdchr's workaround for it make it clear that we have some state leaking into UserDefaults.standard and affecting the unit tests.
This ought not to happen. There are various ways to tackle this problem. For example:
- Inject an in-memory
UserDefaultsinstead of accessing.standard. - Use Dependency Inversion, defining one or more
protocols to place between domain object andUserDefaults - Dup and restore the
UserDefaultsstate before and after each test that interacts with it
Shameless plug, see Test-Driven Development in Swift, Chapter 15.
Before picking one, we should spend some time inspecting the codebase for UserDefaults accesses. I wouldn't be surprised if more than one approach will be necessary, depending on the complexity level of different consumers.
dvdchr