ios - XCTest 和 CoreData

标签 ios unit-testing core-data xctest

我正在尝试使用 XCTest 类和方法在 Xcode 5 中对我的模型进行单元测试。

因为我的模型类继承了 managedObject,所以我不能只实例化(分配/初始化)它们并调用 getter 和 setter 或我需要测试的方法。 我需要使用 NSEntityDescriptionmanagedObjectContext 创建它们。

这就是我遇到麻烦的地方。 我不知道在哪里以及如何为单元测试目的创建 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/

相关文章:

objective-c - 创建 "call"表 : Serialize a Block or NSOperation?

ios - 我在 Xcode 9 中的 "Source control navigator"下得到两个项目源

python - 如何使用 Mock @patch 获取调用计数?

java - 在 Mockito 中捕获一个参数

ios - 使用从服务器检索的实际数据创建核心数据实体的最佳实践

ios - 如何在ios中使用谷歌地图而不是默认 map ?

android - Firebase 数据库从子节点 B 中指定的子节点 A 检索对象

java - Mockito 模拟类返回 Null

ios - 在关系结束时获取唯一对象以获取结果

swift - NSPredicate |在 Entity Fetch Request 上给出错误的异常 | swift 4