NSSearchPathDirectory.DocumentDirectory returns 伪路径
NSSearchPathDirectory.DocumentDirectory returns bogus path
我一直在尝试对使用 Core Data 的 iOS 项目进行单元测试。我正在使用由 Xcode 生成的常用核心数据堆栈。失败的行如下:
lazy var applicationDocumentsDirectory: NSURL = {
let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
return urls[urls.count-1] as NSURL
}()
在我的 mac 上 returns: file:///Users/juliantejera/Library/Developer/CoreSimulator/Devices/{UNIQUE ID}/data/Containers/Data/Application/{UNIQUE ID}/Documents/
关于特拉维斯:file:///var/empty/Documents/
因此无法创建我的 NSManagedObjectContext,我的应用程序崩溃了。有什么解决办法吗?
一周后,我终于能够通过对 NSPersistentStoreCoordinator 使用 NSInMemoryStoreType 而 运行 单元测试来解决我的问题。
var isRunningUnitTests = NSClassFromString("XCTest") != nil
var storeType = isRunningUnitTests ? NSInMemoryStoreType : NSSQLiteStoreType
在我的例子中,问题是 Kiwi 和 Realm 的组合:
我正在初始化测试规范的 context
块中的一个对象,这反过来又强制初始化一个 Realm DB。不确定到底是什么导致了这种奇怪的行为,但从那时起我就把它作为经验法则来初始化 beforeAll
块中的变量。
我一直在尝试对使用 Core Data 的 iOS 项目进行单元测试。我正在使用由 Xcode 生成的常用核心数据堆栈。失败的行如下:
lazy var applicationDocumentsDirectory: NSURL = {
let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
return urls[urls.count-1] as NSURL
}()
在我的 mac 上 returns: file:///Users/juliantejera/Library/Developer/CoreSimulator/Devices/{UNIQUE ID}/data/Containers/Data/Application/{UNIQUE ID}/Documents/
关于特拉维斯:file:///var/empty/Documents/
因此无法创建我的 NSManagedObjectContext,我的应用程序崩溃了。有什么解决办法吗?
一周后,我终于能够通过对 NSPersistentStoreCoordinator 使用 NSInMemoryStoreType 而 运行 单元测试来解决我的问题。
var isRunningUnitTests = NSClassFromString("XCTest") != nil
var storeType = isRunningUnitTests ? NSInMemoryStoreType : NSSQLiteStoreType
在我的例子中,问题是 Kiwi 和 Realm 的组合:
我正在初始化测试规范的 context
块中的一个对象,这反过来又强制初始化一个 Realm DB。不确定到底是什么导致了这种奇怪的行为,但从那时起我就把它作为经验法则来初始化 beforeAll
块中的变量。