ios – XCTest和CoreData

我试图通过使用XCTest类和方法Xcode 5中单元测试我的模型.

因为我的模型类继承了managedobject,我不能只是实例化(alloc / init)它们,而是调用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;
}

这对我有用,因为我使用依赖注入来传递我的moc,而不是使用单例.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...