2017-07-12 77 views
1

我已經在這裏看到後How to unit test Realm migrations和想實現什麼,他們都表示這是如下:如何正確的單元測試領域遷移


存儲舊.realm文件和編寫測試的前/後遷移。


我有我的v0.realm文件在我的單元測試包和正在創建的副本一起工作。問題是,在我最近的遷移中,我從我的應用程序中刪除了一個Type,因此從Realm中刪除了一個Type,我想測試它不再存在。

當我設置我的領域配置時,我應該可以應用一些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) 

回答

1

我無法確定的方式來訪問實體沒有類,所以我決定保留該文件在我的項目,所以我可以保證遷移是通過單元測試正常工作。

雖然這個類不需要遷移,因爲我可以在字符串中使用類名稱來刪除一個實體,但是我希望在我的項目中保留一個小文件比希望遷移正常工作更安全。

+1

爲了讓你打開一個在你的項目中不再聲明的類型的Realm,你需要在「動態」模式下打開一個Realm,但是看起來你已經做得足夠了,避免使用Realm API中較少知道的部分。 – jpsim