У меня есть несколько модульных тестов, в которых я хотел бы проверить, вызван ли обратный вызов правильной очереди отправки.Проверьте правильность очереди отправки в Swift 3
В Swift 2 я сравнил метку текущей очереди с тестовой очередью. Однако в Swift 3 константа DISPATCH_CURRENT_QUEUE_LABEL
больше не существует.
Я нашел функцию dispatch_assert_queue
. Кажется, что мне нужно, но я не уверен, как это назвать.
Мой Swift 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")
Update:
я запуталась отсутствием автозаполнения, но можно использовать __dispatch_assert_queue
:
if #available(iOS 10.0, *) {
__dispatch_assert_queue(test1Queue)
}
Несмотря на то, что это работает для модульных тестов, оно досадно останавливает весь процесс с помощью EXC_BAD_INSTRUCTION
вместо того, чтобы просто не выполнить тест.
Почему бы не установить в качестве предварительного условия для тестирования непосредственно в очереди или установить «конкретный» на нем и получить его позже? – KFDoom
Не могли бы вы использовать setSpecific и getSpecific? src: https://github.com/duemunk/Async/blob/feature/Swift_3.0/AsyncTest/AsyncTests.swift – KFDoom
@KFDoom Не знал об этих функциях. Это отлично подходит для этих модульных тестов! –