Я пытаюсь написать XCTest, который проверяет подключение к сокету. Вот как примерно выглядит мой код подключения:
public class MyConnection: NSObject, NSStreamDelegate {
private let queue = NSOperationQueue()
private var inputStream: NSInputStream!
private var outputStream: NSOutputStream!
public func connect() {
println("Attempting to connect")
queue.addOperationWithBlock() {
var readStream: Unmanaged<CFReadStream>?
var writeStream: Unmanaged<CFWriteStream>?
CFStreamCreatePairWithSocketToHost(nil,
"[my ip address]",
8333,
&readStream,
&writeStream);
if readStream == nil || writeStream == nil {
println("Connection failed")
return
}
self.inputStream = readStream!.takeUnretainedValue()
self.outputStream = writeStream!.takeUnretainedValue()
self.inputStream.delegate = self
self.outputStream.delegate = self
self.inputStream.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode:NSDefaultRunLoopMode)
self.outputStream.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode:NSDefaultRunLoopMode)
self.inputStream.open()
self.outputStream.open()
}
}
// MARK: - NSStreamDelegate
public func stream(stream: NSStream!, handleEvent event: NSStreamEvent) {
println("THIS NEVER GETS CALLED!")
// Notifies delegate that connection opened.
}
}
XCTestCase, который я написал, в основном просто вызывает метод connect() и ожидает вызова метода делегата после успешного подключения. Однако метод делегата никогда не вызывается. Нужно ли мне делать что-то особенное, чтобы это работало в моем тесте?