Prüfen Sie, ob sich in Swift 3 @ die richtige Versandwarteschlange befinde
Ich habe ein paar Unit-Tests, in denen ich testen möchte, ob in der richtigen Versandwarteschlange ein Rückruf aufgerufen wird.
In Swift 2 habe ich die Bezeichnung der aktuellen Warteschlange mit meiner Testwarteschlange verglichen. Jedoch in Swift 3 dasDISPATCH_CURRENT_QUEUE_LABEL
Konstante existiert nicht mehr.
Ich habe das @ gefunddispatch_assert_queue
Funktion. Das scheint das zu sein, was ich brauche, aber ich bin nicht sicher, wie ich es nennen soll.
Mein Swift 2-Code:
let testQueueLabel = "com.example.my-test-queue"
let testQueue = dispatch_queue_create(testQueueLabel, nil)
let currentQueueLabel = String(UTF8String: dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL))!
XCTAssertEqual(currentQueueLabel, testQueueLabel, "callback should be called on specified queue")
Aktualisieren
Ich war verwirrt über den Mangel an Autovervollständigung, aber es ist möglich, @ zu verwend__dispatch_assert_queue
:
if #available(iOS 10.0, *) {
__dispatch_assert_queue(test1Queue)
}
Während dies für Komponententests funktioniert, stoppt es den gesamten Prozess ärgerlich mit einemEXC_BAD_INSTRUCTION
anstatt nur einen Test nicht zu bestehen.