import Randomizable
// conform Decodable to auto-implement Randomizable
struct User: Decodable, Randomizable {
let id: ID
let name: String
struct ID: Decodable, Randomizable {
let id: Int
}
}
let user = User.randomValue()
// => User(id: ID(id: 1823), name: "raewfbaw")
Customize random value
struct User: Decodable, Randomizable {
let name: String
let profile: Profile
struct Profile: Decodable, Randomizable {
let email: String
let birthday: Date?
static func randomValue() -> Profile {
return Profile(email: "\(String.randomValue())@test.com",
birthday: Date?.randomValue())
}
}
}
let user = User.randomValue()
// => User(name: "gaoaweja", profile: Profile(email: "iwelasm@test.com"
// birthday: 2018-11-02 16:25:17 +0000))
Enum support
struct A: Decodable, Randomizable {
let animal: Animal
enum Animal: String, Decodable, CaseIterable, Randomizable {
case cat
case dog
case rabbit
}
}
A.randomValue()
// => A(animal: Animal.cat)
Configuration
struct A: Decodable, Randomizable {
let int: Int?
let string: String?
}
let configuration = RandomizableConfiguration()
configuration.forceNil = true
let a = A.randomValue(with: configuration)
a.int // nil
a.string // nil
Contributing
Fork it!
Create your feature branch: git checkout -b my-new-feature
Commit your changes: git commit -am 'Add some feature'
Push to the branch: git push origin my-new-feature
Submit a pull request :D
License
Randomizable is released under the MIT license. See LICENSE for details.
Randomizable
Any type random value generator to reduce boilerplates for unittest
Features
Requirements
Installation
Carthage
Swift Package Manager
Usage
Generate random value for
struct
Customize random value
Enum support
Configuration
Contributing
git checkout -b my-new-feature
git commit -am 'Add some feature'
git push origin my-new-feature
License
Randomizable is released under the MIT license. See LICENSE for details.