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()
这将为我们的示例模型生成以下数据
您也可以直接实例化您自己的 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 文件。