Вот моя ситуация, и, возможно, есть более простой способ сделать это:Уплотненные селектор функций в стриже для тестирования
Я тестирую некоторые вещи, которые используют уведомления, и я не хочу, чтобы определить мои ожидания как необязательные переменные уровня класса, поэтому мне было интересно, могу ли я сделать их локальными переменными для функции таким образом, чтобы мой обработчик уведомлений мог получить к ним доступ.
Моя попытка была сделать функции обработчика уведомлений в виде вложенных функций внутри моей верхней функции тестирования уровня - но я уже столкнулся с проблемами селекторных имен, как я не уверен, что мне нужно сказать, обработчик уведомлений для вызова
class FilePlayerTests: XCTestCase {
func testFilePlayback() {
let f1URL : NSURL = NSBundle(forClass: FilePlayerTests.self).URLForResource("test1", withExtension: "csv")!
let f2URL : NSURL = NSBundle(forClass: FilePlayerTests.self).URLForResource("test2", withExtension: "csv")!
let f3URL : NSURL = NSBundle(forClass: FilePlayerTests.self).URLForResource("test3", withExtension: "csv")!
let f1 = dm.createFilePlayerFromURL(f1URL)
let f2 = dm.createFilePlayerFromURL(f2URL)
let f3 = dm.createFilePlayerFromURL(f3URL)
let e1 = expectationWithDescription("xplane1")
let e2 = expectationWithDescription("xplane2")
let e3 = expectationWithDescription("xplane3")
f1?.startPlayback()
//Define LocationMessage Observer
nc.addObserver(self, selector: "newHandler:",
name: dmNotification.LocationData.rawValue,
object: nil)
///Prints out a new Location Message
func newHandler(notif: NSNotification) {
let msg = notif.asLocationMessage!
println(msg)
e1.fulfill()
}
}
}
Так что мой код падает, потому что он не может найти селектор.
1) Действительно ли это?
2) Как бы правильно назвать селектор, чтобы его можно было найти?