我們一直在使用RLMClearRealmCache
以清除測試遷移測試之間的境界的狀態。如果緩存不被清除,接下來的測試將不會執行遷移,因爲緩存仍然報告的模式是最新的,即使我們刪除並替換境界夾具文件(其中有一個老的架構)。如何在測試之間重置Realm的狀態?
RLMClearRealmCache
被轉移到一個Objective-C++文件近日,所以我們要停止使用,並避免在我們的項目中使用Objective-C++。這仍然是最好的/唯一的方式嗎?
需要明確的是,我們沒有使用內存及的境界這些規範。我們有我們從一個設備在特定版本中保存的default.realm
fixture文件,我們正在做以下使用:
- (void)loadBundledRealmWithName:(NSString *)name;
{
[self deleteOnDiskRealm];
// copy over the file to the location
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *source = [[NSBundle bundleForClass:[self class]] pathForResource:name ofType:@"realm"];
if (documentsDirectory && source) {
NSString *destination = [documentsDirectory stringByAppendingPathComponent:kDefaultRealmFileName];
[[NSFileManager defaultManager] copyItemAtPath:source toPath:destination error:nil];
}
}
然而,測試用例之間,但無RLMClearRealmCache
一個電話,似乎雖然境界的緩存確定遷移已經運行,儘管我們已經換了.realm
文件,他們需要再次運行。
我應該更清楚,我們沒有使用IN-內存領域。我已經更新了我的問題。 – solidcell
啊,好的。我是否應該刪除這個答案,或者我們是否應該保留這個答案,以防其他人搜索「重置測試之間的區域狀態」? – joern
是的,我認爲離開它只能幫助別人。 – solidcell