the*_*ory 5 testing entities core-data ios sentestingkit
我有一个预先存在的项目,我已经添加了核心数据模型.我添加了核心数据框架,添加了一个包含实体的数据模型,并将其包含在我的应用程序目标中,以及一些生成的NSManagedObject类.它编译得很好,现在我想为我创建的实体添加一些测试.按照这些说明,我已经设置了一个逻辑测试基类,其setUp方法如下:
- (void)setUp {
model = [NSManagedObjectModel mergedModelFromBundles:nil];
NSLog(@"model: %@", model);
coord = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
store = [coord addPersistentStoreWithType:NSInMemoryStoreType
configuration:nil
URL:nil
options:nil
error:NULL];
ctx = [[NSManagedObjectContext alloc] init];
[ctx setPersistentStoreCoordinator:coord];
}
Run Code Online (Sandbox Code Playgroud)
这将编译并创建所有对象.但是,该模型没有实体!该NSLog()输出看起来像这样:
2011-10-29 23:56:58.941 otest[42682:3b03] model: (<NSManagedObjectModel: 0x19c6780>) isEditable 1, entities {
}, fetch request templates {
}
Run Code Online (Sandbox Code Playgroud)
那么我的实体在哪里?我已经在捆绑了一下,也没有.momd文件.我是否错过了让我的模型构建的关键步骤?
我做了一些额外的Duck Duck Go ing并设法在这个答案中找到了我需要的信息.结果是,因为测试目标不使用"主"包,我必须实例化测试包.而不是这一行:
model = [NSManagedObjectModel mergedModelFromBundles:nil];
Run Code Online (Sandbox Code Playgroud)
我现在有这三行:
NSBundle *bundle = [NSBundle bundleWithIdentifier:@"com.example.LogicTests"];
NSURL *url = [bundle URLForResource:@"MyModels" withExtension:@"momd"];
model = [[NSManagedObjectModel alloc] initWithContentsOfURL:url];
Run Code Online (Sandbox Code Playgroud)
包标识符直接来自我的目标构建信息,而"MyModels"来自我的数据模型文件,名为"MyModels.xcdatamodeld",并作为"MyModels.momd"包含在应用程序包中.当然,这包含我的模型.
| 归档时间: |
|
| 查看次数: |
1715 次 |
| 最近记录: |