RandomFactory

Swift Swift Package Manager License

RandomFactory 允许您为任何 Codable 模型生成一些逼真的虚假数据。 通过使用模型的属性类型和名称,RandomFactory 将做出有根据的猜测,以确定您的数据应该是什么样子。

安装

RandomFactory 可以通过 Swift Package Manager 安装。 要安装,只需将以下行添加到 Package.swift 文件中的依赖项。

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

RandomFactory 可以通过 CocoaPods 安装。 要安装它,只需将以下行添加到您的 Podfile 中

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

RandomFactory 也可以通过 Carthage 安装。 要安装,只需写入您的 Cartfile

github "Appsaurus/RandomFactory"

用法

创建您的模型类 (不要忘记实现 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
}

然后您可以像这样生成一个实例

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

这将为我们的示例模型生成以下数据

Data

您也可以直接实例化您自己的 RandomFactory,而无需使用 shared 单例。 但是,当生成同一类的多个实例时,单例方法会显著提高速度,因为它会缓存内容类型匹配算法的结果。

数组

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

警告

此库使用运行时反射来分析您的模型并生成适当的数据。 由于 Swift ABI 不稳定性,此库可能最适合用于测试目的(例如将大量测试数据播种到数据库中)。 我将尽力使其与新版本的 Swift 保持更新,但是根据 Swift 团队的所作所为,该库可能会在未来的 Swift 版本中中断。 希望一旦实现了 ABI 稳定性,就会有一种更好、更可靠的方式来进行反射,并且这将可以用于生产环境。

贡献

我们非常欢迎您为 RandomFactory 做出贡献,请查看 CONTRIBUTING 文件以获取更多信息。

许可证

RandomFactory 在 MIT 许可证下可用。 有关更多信息,请参见 LICENSE 文件。