Bankside 0.3.0

Bankside 0.3.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布上次发布2015年12月
SPM支持 SPM

Bjarne Mogstad 维护。



Bankside 0.3.0

  • 作者
  • Bjarne Mogstad

Bankside

Bankside 是一个固定装置生成工具。它用于定义测试的固定装置。受到 factory_girlRosie.js 的启发

用法

Bankside 提供了一个简单的 API 来定义默认属性和选项,允许你改变数据生成方式。

定义一个工厂

struct Account {
  let id: Int
  let name: String
  init(payload: [String: Any]) {
    self.id = payload["id"] as! Int
    self.name = payload["name"] as! String
  }
} 
import Bankside

let AccountFactory = Factory({ Account(payload: $0) })
  .sequence("id")
  .attr("name", "Walter White")

使用工厂

let walter = AccountFactory.build()
let gustavo = AccountFactory.build(attributes: [
  "name": "Gustavo Fridge"
])

扩展

为了保持固定装置的 DRY 原则,通过扩展 Factory 类并添加常见或复杂的默认属性是有用的。记得返回 self 以保持 API 可链性。

extension Factory {

  func timestamp() -> Self {
    func date(options: [String: Any]) {
      return NSDate()
    }
    self.attr("created_at", closure: date)
    self.attr("updated_at", closure: date)
    return self
  }

}

使用中

let AccountFactory = Factory({ Account(payload: $0) })
  .sequence("id")
  .attr("name", "Walter White")
  .timestamps()

限制

我们不尝试检测循环依赖,如果发生这种情况,你将只会遇到堆栈溢出。

安装

要求

  • Bankside 将与 Swift 的最新公开版本兼容。旧版本将可用,但不会发布错误修复。
  • 一个数据结构,它接受反射数据结构来填充其模型。