ios - 如何正确地对 Realm 迁移进行单元测试

标签 ios swift realm database-migration xctest

我看过这里的帖子How to unit test Realm migrations并正在努力实现他们所说的内容如下:


存储旧的 .realm 文件并为迁移前/后编写测试。


我的单元测试包中有我的 v0.realm 文件,我正在创建它的副本以供使用。问题是,在我最近的迁移中,我从我的应用程序中删除了一个类型,因此从 Realm 中删除了一个类型,我想测试它是否不再存在。

当我设置我的 Realm 配置时,我应该能够应用一些 objectTypes,但是该类不再在我的应用程序中,我不确定如何检查它。

这是我当前的测试设置,我试图测试我的对象是否存在于 Realm v0 中。请注意,这是我第一次使用 Realm 进行迁移,也是我第一次使用 Realm。

let realmV0 = loadRealmFromResource(withName: "realm-v0")

// Test that MyEntity exists

// How can I specify my objectTypes without having access to MyEntity.self
// since it no longer exists in my project?
let configuration = Realm.Configuration(fileURL: realmV0, deleteRealmIfMigrationNeeded: true, objectTypes: objectTypes)
let realm = try! Realm(configuration: configuration)

let results = realm.dynamicObjects("MyEntity")

XCTAssert(results.count > 0)

最佳答案

我无法确定在没有类的情况下访问实体的方法,因此我决定将该文件保留在我的项目中,这样我就可以通过单元测试确保迁移正常进行。

尽管迁移不需要该类,因为我可以使用字符串中的类名删除实体,但我觉得在我的项目中保留一个小文件比希望迁移正常进行更安全。

关于ios - 如何正确地对 Realm 迁移进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45065823/

相关文章:

ios - 如何在 iOS 中使用 Firebase 检索图像?

ios - 为什么我得到 : Object file was built for newer iOS version than being linked?

ios - SIGABRT Xcode???需要帮助

iphone - 用于空单元格的 UITableView 自定义分隔符

ios - [Swift]如何将字符串分配给 UITextField?

ios - 解析 - callFunctionInBackground 在 [__NSTaggedDate UTF8String] 上使应用程序崩溃 - 但当我提交应用程序时却没有崩溃

swift - 请帮助我了解 UITouch (SpriteKit)

ios - Realm 创建和人口序列

ios - Realm 迁移 : Why in documentation it is recommended to call the migration block each time without checking the schema version before?

swift - 使用 RKValueTransFormer 将 NSArray 转换为 RLMArray 无法将 outputValue 转换为 AutoreleasingUnsafeMutablePointer<AnyObject?>