gpt4 book ai didi

ios - CoreData 的 XCTestCase 失败,返回 "could not locate the entity for myappTests.Example"

转载 作者:搜寻专家 更新时间:2023-10-30 21:58:38 24 4
gpt4 key购买 nike

我可以在 XCTestCase 测试中创建这样的实体:

let entity = NSEntityDescription.insertNewObject(
forEntityName: String(describing: Example.self),
into: inMemoryManagedObjectContext)

但是如果我这样做的话:

let item = Example(context: inMemoryManagedObjectContext)

测试会失败并显示...

failed: caught "NSInvalidArgumentException", "An NSManagedObject of
class 'myappTests.Example' must have a valid NSEntityDescription."

如果我不能按照通常的方式创建 Core Data 对象,我该如何测试它们?

最佳答案

我也有这个问题:)我猜,问题是 CoreData 还不知道这些实体。所以,我能够测试它的解决方案是在测试时拥有一个 NSPersistantContainer 实例。

var persistentContainer: NSPersistentContainer!
override func setUp() {
super.setUp()
guard let model = CoreDataUtilities.model(withName: "ModelName") else {
return XCTFail("Model should load")
}
storeFolder = FileManager.default.temporaryDirectory.appendingPathComponent("storeDirectory", isDirectory: true)
let storeURL = storeFolder.appendingPathComponent("store.db")
let storeInfo = NSPersistentStoreDescription(url: storeURL)
storeInfo.type = NSSQLiteStoreType
persistentContainer = NSPersistentContainer(name: "ModelName", managedObjectModel: model)
persistentContainer.persistentStoreDescriptions = [storeInfo]
return
}

现在您可以以经典方式使用 CoreData。

关于ios - CoreData 的 XCTestCase 失败,返回 "could not locate the entity for myappTests.Example",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45580927/

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