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

How to properly unit test Realm migration

我已经查看了 post 此处 并正在尝试实施他们所说的内容如下:


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


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

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

这是我当前的测试设置,我试图在其中测试我的对象是否存在于 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)

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

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