3

我正在尝试使用我觉得相对舒服的 OCUnit/SenTest 框架编写集成测试。该测试是关于 NSPersistentDocument 子类的加载,该子类依赖于已成功导入的 CoreData 托管对象模型。

解决此问题的最佳方法是什么?我一直在尝试一整天,这是一个接一个的问题。这样做(为了相关性而修剪):

NSManagedObjectContext *moc = [NSManagedObjectContext new];
[moc setPersistentStoreCoordinator:coordinator];
MyDocument *mdoc = [MyDocument new];
[mdoc setManagedObjectContext:moc];
STAssertTrue([mdoc readFromURL:docUrl ofType:@"dfb" error:&error], @"File not loaded: %@", [error localizedDescription]);

不会产生错误,但文档的托管对象上下文为空 - 即[[mdoc.managedObjectContext registeredObjects] count]为零。

运行主应用程序(不在单元测试下)按预期工作。docUrl 处的文件加载并且界面正确填充。

我错过了什么?

4

1 回答 1

1

您的代码似乎混合了两种初始化样式。NSPersistentDocument自动设置其核心数据堆栈,在-init.

试试这个:

MyDocument *mdoc = [[MyDocument alloc] init];
STAssertTrue([mdoc readFromURL:docUrl ofType:@"dfb" error:&error],
             @"File not loaded: %@", [error localizedDescription]);
于 2012-03-10T16:33:22.280 回答