Опитвам се да тествам нещо и имам нужда от достъп до файла, който е в същата директория като тестовата класа (всъщност в поддиректория). Опитвам се да го направя по следния начин:
let fileURL = testBundle.URLForResource("MasterCalendar", withExtension: "ics", subdirectory: "Calendars")
Аз също го опитах така:
let fileURL = testBundle.URLForResource("MasterCalendar", withExtension: "ics")
Моят клас се нарича ParserTest. Файлът, до който се опитвам да вляза, се намира както е показано:
Опитах се да получа пътя на файла:
if let filePath = NSBundle.mainBundle().pathForResource("MasterCalendar", ofType: "ics", inDirectory: "Calendars") {
print("PATH: ", filePath)
}
Опитах се да премахна inDirectory и да поставя също "CallInTests / Calendar". Нищо не работи. Самият файл се добавя в Целта за тестове:
Независимо от това, което правя, fileURL винаги се връща на нула.
Отговори:
1 за отговор № 1Не е съвсем ясно за мен как testBundle
е дефиниран, но това работи за мен:
let bundle = Bundle(for: YourClassHere.self)
Така че във вашия случай това ще бъде:
let bundle = Bundle(for: ParserTest.self)
Което можете да използвате по следния начин:
if let path = bundle.path(forResource: "MasterCalendar", ofType: "ics") {
//magic goes here
}
Версия Swift 2.3
let bundle = NSBundle(forClass: ParserTest.self)
if let path = bundle.pathForResource("MasterCalendar", ofType: "ics") {
//magic still goes here :)
}
Надявам се, че ви помага.
0 за отговор № 2
опитайте по следния начин:
let testBundle = NSBundle(forClass: self.dynamicType)
let fileURL = testBundle.URLForResource("MasterCalendar", withExtension: "ics")
XCTAssertNotNil(fileURL)