Injector.swift
and Factory.swift
are the only source files).Injector uses the concept of a syringe:
extension Syringe {
}
Filled with medicine:
extension Syringe {
// Same mock for all environments
static let person = Medicine<PersonType>(Person(), mock: Person_Mock())
// Unique mock for all environments
static let cat = Medicine<CatType>(
Cat(),
unitTests: Cat_Mock("Mary"),
uiTests: Cat_Mock("Sam"),
swiftUIPreview: Cat_Mock("Kerry")
)
// See Medicine initializer for all combinations
}
And at runtime injected:
let person = Syringe.person.inject()
// or
let person = Syringe.person()
// or
@Inject(Syringe.person) var person
Performing a clean will reset the instances:
Syringe.clean()
https://github.com/ptrkstr/injector
link |
Stars: 6 |
Last commit: 3 weeks ago |
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics