gpt4 book ai didi

ios - 在 XCTest 中使用时,核心数据存储库为空

转载 作者:行者123 更新时间:2023-11-29 10:25:06 25 4
gpt4 key购买 nike

在 XCTest 类中,我得到这样的托管对象上下文:

//setup Core Data Stack
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"FabApp" withExtension:@"momd"];
NSManagedObjectModel *mom = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mom];
NSError *error = nil;
XCTAssertTrue([psc addPersistentStoreWithType:NSInMemoryStoreType configuration:nil URL:nil options:nil error:&error] ? YES : NO, @"Should be able to add in-memory store");


self.moc = [[NSManagedObjectContext alloc] init];
self.moc.persistentStoreCoordinator = psc;

ManagedObejctContex 已成功创建,但当我尝试获取某些实体时,它找不到任何实体。我 100% 确定这些实体存在于核心数据中,因为我在应用程序中使用它们

- (void) testAllInputIsSavedInCoreData{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Employ"
inManagedObjectContext:_moc];
[fetchRequest setEntity:entity];

NSError *error = nil;
NSArray *results = [_moc executeFetchRequest:fetchRequest error:&error];


XCTAssertEqual([[_lines objectAtIndex:0] count], [results count],@"Missmatch in saved data read %lu but saved %lu",(unsigned long)[[_lines objectAtIndex:0] count], (unsigned long)[results count]);
}

这怎么可能,我是不是错过了什么?

最佳答案

您正在使用内存中持久存储(NSInMemoryStoreType)而不是 SQLite(或 XML)。内存存储中“存储”的所有内容都不会写入 sqlite 数据库,它只存在于上下文被释放之前,每次设置堆栈时都会发生这种情况。

在编写单元测试时,您通常需要这种行为,因为您不希望每次运行测试时都在 Core Data 中存储额外的对象。

关于ios - 在 XCTest 中使用时,核心数据存储库为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32808645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com