FactoryFactory 0.1.0

FactoryFactory 0.1.0

Takeshi Ihara 维护。



  • 作者:
  • Takeshi Ihara

🏭FactoryFactory🏭

Build Status Version Platform GitHub license GitHub release Xcode Swift Swift Package Manager

生成 Swift 工厂框架的样板代码。

要求

FactoryFactory 适用于以下平台

  • iOS 8+
  • Mac OSX 10.9+
  • watchOS 2+
  • tvOS 9+

FactoryFactory

1. 安装

CocoaPods

FactoryFactory 运行时通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中的测试目标

pod "FactoryFactory"

并将以下 Run script 构建阶段添加到测试目标的 Build Phases

"${PODS_ROOT}/FactoryFactory/run" \
    --include "${PROJECT_DIR}/${PROJECT_NAME}/Input1/**/*.swift" \
    --include "${PROJECT_DIR}/${PROJECT_NAME}/Input2/**/*.swift" \
    --exclude "${PROJECT_DIR}/${PROJECT_NAME}/Input2/InputFile.swift" \
    --testable "$PROJECT_NAME" \
    --output "$PROJECT_DIR/${PROJECT_NAME}Tests/Factories.generated.swift"

运行一次后,定位 Factories.generated.swift 并将其拖放到 Xcode 测试目标组中。

--include

要生成的文件的路径

跳过生成文件的路径

不生成文件的路径

可测试的目标

可测试的目标

生成文件的路径

生成的文件路径

2. 用法

您可以通过调用<TypeName>.provide()获取一个实例。每个属性都设置为默认值。

struct Climber {
    let name: String
    let age: Int
}

let climber = Climber.provide()

3. 镜

<TypeName>.provide()提供固定实例。您可以通过镜修改每个属性。

获取

let name = Climber._name.get(Climber.provide())
// ""

设置

let climber = Climber._name.set(Climber.provide(), "Climber")
// Climber(name: "Climber", age: 0)

修改

let climber1 = Climber._name.set(Climber.provide(), "Climber")
// Climber(name: "Climber", age: 0)

let climber = Climber._name.modify(climber1, f: { $0 + $0 })
// Climber(name: "ClimberClimber", age: 0)

编写

struct Climber {
    let id: Id
    let name: String
    
    struct Id {
        let value: String
    }
}

let climber1 = Climber.provide()
// Climber(id: Id(value: ""), name: "")

let climber2 = Climber._id.compose(other: Climber.Id._value).set(climber1, "id")
// Climber(id: Id(value: "id"), name: "")

许可

FactoryFactory 在 MIT 许可证 下提供。