Tôi có một vài bài kiểm tra đơn vị mà tôi muốn kiểm tra xem một cuộc gọi lại có được gọi trên hàng đợi đúng hay không.Kiểm tra xem có đúng hàng đợi công văn trong Swift 3
Trong Swift 2, tôi đã so sánh nhãn của hàng đợi hiện tại với hàng đợi kiểm tra của tôi. Tuy nhiên trong Swift 3 hằng số DISPATCH_CURRENT_QUEUE_LABEL
không còn tồn tại nữa.
Tôi đã tìm thấy hàm dispatch_assert_queue
. Mà có vẻ là những gì tôi cần, nhưng tôi không chắc chắn làm thế nào để gọi nó.
Swift 2 Mã của tôi:
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")
Cập nhật:
tôi đã nhầm lẫn do thiếu autocomplete, nhưng nó có thể sử dụng __dispatch_assert_queue
:
if #available(iOS 10.0, *) {
__dispatch_assert_queue(test1Queue)
}
Trong khi điều này làm việc cho các bài kiểm tra đơn vị, nó gây phiền nhiễu dừng toàn bộ quá trình với một EXC_BAD_INSTRUCTION
thay vì chỉ thất bại một bài kiểm tra.
Tại sao không đặt điều kiện tiên quyết để kiểm tra trực tiếp cho hàng đợi hoặc thiết lập "cụ thể" vào nó và lấy nó sau này? – KFDoom
Bạn không thể sử dụng setSpecific và getSpecific? src: https://github.com/duemunk/Async/blob/feature/Swift_3.0/AsyncTest/AsyncTests.swift – KFDoom
@KFDoom Không biết về các chức năng đó. Điều đó hoạt động tốt cho các bài kiểm tra đơn vị này! –