这是我的情况,也许有一种更简单的方法可以做到这一点:
我正在测试一些使用通知的东西,我不想将我的期望定义为类级别的可选变量,所以我想知道是否可以让它们成为函数的局部变量,以便通知处理程序可以访问他们。
我的尝试是将通知处理程序函数作为我的顶级测试函数中的嵌套函数 - 但我遇到了选择器命名问题,因为我不确定我需要告诉通知处理程序调用什么
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) 我将如何正确命名选择器以便可以找到它?