我们一直在使用RLMClearRealmCache
在测试迁移的测试之间清除 Realm 的状态。如果缓存没有被清除,下一个测试将不会执行迁移,因为缓存仍然报告模式是最新的,即使我们已经删除并替换了领域固定文件(它具有旧模式)。
RLMClearRealmCache
最近被移动到一个 Objective-C++ 文件,所以我们想停止使用它并避免在我们的项目中使用 Objective-C++。这仍然是最好/唯一的方法吗?
需要明确的是,我们没有将内存中的领域用于这些规范。我们有一个default.realm
在特定版本的设备中保存的夹具文件,我们正在执行以下操作来使用它:
- (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 的缓存确定迁移已经运行,即使我们已经换出.realm
文件并且需要再次运行它们。