Generate boilerplate of factory Swift framework.
- Swift 4+
- Xcode 9+
FactoryProvider works on the following platforms:
- iOS 8+
- Mac OSX 10.9+
- watchOS 2+
- tvOS 9+
- Enum
- Struct
FactoryProvider runtime is available through CocoaPods. To install it, simply add the following line to your test target in your Podfile:
pod "FactoryProvider"And add the following Run script build phase to your test target's Build Phases:
"${PODS_ROOT}/FactoryProvider/generate" --config .factory.ymlAfter running once, locate Factories.generated.swift and drag it into your Xcode test target group.
includes: # paths of file or directory to generate
- Input/SubInput1
- Input/SubInput2/Source.swift
excludes: # paths of file or directory not to generate
- Input/SubInput1/SubSubInput
- Input/SubInput2/Source.swift
testables: # testable targets
- target1
- target2
output: output/Factories.generated.swift # path of generated fileYou can get a instance to call Factory<TypeName>.provide(). Each properties are set to default value.
struct Climber {
let name: String
let age: Int
}
let climber = Factory<Climber>.provide()
// Climber(name: "", age: 0)
let optClimber = Factory<Climber?>.provide()
// Optional(Climber(name: "", age: 0))
let arrayClimber = Factory<[Climber]>.provide()
// [Climber(name: "", age: 0)]Factory<TypeName>.provide() provides fixed instance. You can modify each property by Lens.
let name = Factory<Climber>.provide().name or Lens<Climber>.name().get(Factory<Climber>.provide())
// ""import FactoryProvider
let climber = Factory<Climber>.provide() |> Lens<Climber>.name() *~ "Climber"
// Climber(name: "Climber", age: 0)import FactoryProvider
let name = Factory<Climber>.provide() |> Lens<Climber>.name() *~ { "Climber" |> { $0 + $0 } }()
// Climber(name: "ClimberClimber", age: 0)import FactoryProvider
struct Climber {
let id: Id
let name: String
struct Id {
let value: String
}
}
let climber1 = Factory<Climber>.provide()
// Climber(id: Id(value: ""), name: "")
let climber2 = climber1 |> Lens<Climber>.id() * Lens<Climber.Id>.value() *~ "id"
// Climber(id: Id(value: "id"), name: "")If you want to contains type using generics, you should use 0.4.1.
pod "FactoryProvider", '~> 0.4.1'FactoryProvider is available under the MIT License.