Ho alcuni test di unità in cui vorrei verificare se una richiamata viene chiamata sulla coda di invio corretta.Controllare se sulla coda di invio corretta in Swift 3
In Swift 2, ho confrontato l'etichetta della coda corrente con la mia coda di test. Tuttavia in Swift 3 la costante DISPATCH_CURRENT_QUEUE_LABEL
non esiste più.
Ho trovato la funzione dispatch_assert_queue
. Che sembra essere quello di cui ho bisogno, ma non sono sicuro di come chiamarlo.
mio Swift Codice 2:
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")
Aggiornamento:
mi sono confuso dalla mancanza di completamento automatico, ma è possibile utilizzare __dispatch_assert_queue
:
if #available(iOS 10.0, *) {
__dispatch_assert_queue(test1Queue)
}
Mentre funziona per i test unitari, interrompe fastidiosamente l'intero processo con un EXC_BAD_INSTRUCTION
invece di fallire un test.
perché non impostare una precondizione per testare direttamente per la coda o impostare "specifiche" su di esso e recuperare in un secondo momento? – KFDoom
Non potresti usare setSpecific e getSpecific? src: https://github.com/duemunk/Async/blob/feature/Swift_3.0/AsyncTest/AsyncTests.swift – KFDoom
@KFDoom Non conoscevo queste funzioni. Funziona benissimo per questi test unitari! –