目录
目录README.md

RandomFactory

Swift Swift Package Manager License

RandomFactory allows you to generate somewhat realistic fake data for any Codable model. Using the types and names of your model’s properties, RandomFactory will make an educatd guess as to what your data should look like.

Installation

RandomFactory is available through Swift Package Manager. To install, simply add the following line to the dependencies in your Package.swift file.

let package = Package(
    name: "YourProject",
    dependencies: [
        ...
        .package(url: "https://github.com/Appsaurus/RandomFactory", from: "1.0.0"),
    ],
    targets: [
      .testTarget(name: "YourApp", dependencies: ["RandomFactory", ... ])
    ]
)
        

RandomFactory is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'RandomFactory', :git => "https://github.com/Appsaurus/RandomFactory"

RandomFactory is also available through Carthage. To install just write into your Cartfile:

github "Appsaurus/RandomFactory"

Usage

Create your model classes (don’t forget to implement Codable):

open class User: Codable{
    public var name: Name
    public var username: String
    public var email: String
    public var jobTitle: String
    public var birthday: Date
    public var company: Company
    public var phoneNumber: String
    public var profileImageURL: URL
}

public struct Location: Codable{
    var coordinate: CLLocationCoordinate2D
    var thoroughfare: String
    var subThoroughfare: String
    var locality: String
    var subLocality: String
    var administrativeArea: String
    var subAdministrativeArea: String
    var postalCode: String
    var countryCode: String

}
public class Name: Codable{
    public var namePrefix: String
    public var givenName: String
    public var middleName: String
    public var familyName: String
    public var nameSuffix: String?
    public var nickname: String?
}

open class Company: Codable{
    public var name: String
    public var industry: String
    public var foundedOn: Date
    public var location: Location
    public var logoURL: URL
    public var products: [Product]
}

open class Product: Codable{
    public var name: String
    public var price: Int
    public var description: String
    public var image: URL
}

Then you can generate an instance like so:

let user: User = try RandomFactory.shared.randomized()

Which will generate the following data for our example models:

Data

You may also directly instantiate your own RandomFactory without using the shared singleton, however, the singleton approach will give you drastic speed improvements when generating multiple instances of the same class as it caches the results of the content type matching algorithm.

Arrays

let count = 5
let users: [User] = try RandomFactory.shared.randomizedArray(of: count)

Warning

This library usings runtime reflection to analyze your model and generate appropriate data. This library is probably best used for testing purposes (like seeding a bunch of test data into a database), due to swift ABI instability. I will do my best to keep this updated with new versions of Swift, but depending upon what the swift team does, this library could break in future versions of Swift. Hopefully, once ABI stability is achieved, there will be a better, more reliable way to do reflection and this will be production ready.

Contributing

We would love you to contribute to RandomFactory, check the CONTRIBUTING file for more info.

License

RandomFactory is available under the MIT license. See the LICENSE file for more info.

邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号