我正在尝试使用 XCTest 类和方法在 Xcode 5 中对我的模型进行单元测试。
因为我的模型类继承了 managedObject
,所以我不能只实例化(分配/初始化)它们并调用 getter 和 setter 或我需要测试的方法。
我需要使用 NSEntityDescription
和 managedObjectContext
创建它们。
这就是我遇到麻烦的地方。
我不知道在哪里以及如何为单元测试目的创建 managedObjectContext
。
如果有人有一些建议或代码示例,那将非常有帮助。 谢谢。
最佳答案
我使用内存存储进行单元测试并在其中创建所有实体。
该类方法可以放在TestsHelper.m
+ (NSManagedObjectContext *)managedObjectContextForTests {
static NSManagedObjectModel *model = nil;
if (!model) {
model = [NSManagedObjectModel mergedModelFromBundles:[NSBundle allBundles]];
}
NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
NSPersistentStore *store = [psc addPersistentStoreWithType:NSInMemoryStoreType configuration:nil URL:nil options:nil error:nil];
NSAssert(store, @"Should have a store by now");
NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
moc.persistentStoreCoordinator = psc;
return moc;
}
这对我有用,因为我使用依赖注入(inject)来传递我的 moc,而不是使用单例。
关于ios - XCTest 和 CoreData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21460424/