假设我在我的项目中创建了 Core Data 模型。我有其他类的方法接受这些模型并根据它们的属性执行一些功能。我如何对这些类进行单元测试?
对于普通的 Swift 文件,我在 Xcode 中选择它们并勾选一个框,使这些文件中定义的任何类对项目的单元测试部分可见。我的问题本质上是,如何让我的核心数据模型也对测试可见?
请注意,我不想在核心数据堆栈上执行任何操作,我只想能够创建模型的实例并将其传递到方法中。
最佳答案
由于 CoreData 使用托管对象,NSManagedObject 的任何子类在功能上都是毫无值(value)的,除非附加到上下文。
测试的一个技巧是在内存中创建一个 NSManagedObjectContext 并使用该上下文创建对象测试。 Outlined Here
这是在内存中创建上下文的代码:
func setUpInMemoryManagedObjectContext() -> NSManagedObjectContext {
let managedObjectModel = NSManagedObjectModel.mergedModelFromBundles([NSBundle.mainBundle()])!
let persistentStoreCoordinator = NSPersistentStoreCoordinator(managedObjectModel: managedObjectModel)
do {
try persistentStoreCoordinator.addPersistentStoreWithType(NSInMemoryStoreType, configuration: nil, URL: nil, options: nil)
} catch {
print("Adding in-memory persistent store failed")
}
let managedObjectContext = NSManagedObjectContext()
managedObjectContext.persistentStoreCoordinator = persistentStoreCoordinator
return managedObjectContext
}
关于swift - 如何让单元测试访问核心数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41985415/