2014-12-21 10 views
6

Tôi đang thử nghiệm một cuộc gọi không đồng bộ bằng XCTestExpectation.XCTestCase waitForExpectationsWithTimeout: handler: ném EXC_BAD_ACCESS khi kỳ vọng không được thực hiện

Mã sau hoạt động (thử nghiệm thành công) khi trình hoàn thànhHandler được thực hiện trước thời gian chờ 1 giây nhất định.

func test__async_call() { 
     // prepare 
     let sut = ClassToTest() 
     let expectation: XCTestExpectation = self.expectationWithDescription(nil) 

     // test 
     sut.methodToTestWithCompletionHandler() {() ->() in 
      expectation.fulfill() 
     } 

     // verify 
     self.waitForExpectationsWithTimeout(1, handler: nil) 
    } 

Tuy nhiên, nếu completionHandler không được gọi, và do đó kỳ vọng không thực hiện, thay vì nhận được một thử nghiệm thất bại khi gọi waitForExpectationsWithTimeout tôi nhận được một EXC_BAD_ACCESS, mà không phải là rất tiện dụng vì điều này làm cho nó không thể để xem toàn bộ kết quả của bộ thử nghiệm.

Tôi làm cách nào để tránh điều này và bị lỗi kiểm tra bình thường?

Trả lời

4

Có vẻ như những gì đang gây ra EXC_BAD_ACCESS là chuyển một mô tả nil khi tạo kỳ vọng.

Truyền bất kỳ chuỗi nào cho cuộc gọi này làm cho nó hoạt động và chúng tôi nhận được lỗi thử nghiệm dự kiến ​​khi kỳ vọng không hoàn thành.

let expectation: XCTestExpectation = self.expectationWithDescription("...") 
+2

Có lỗi tương tự khi tôi giả định tham số chặn trình xử lý 'lỗi' không bao giờ là' nil'. Trình xử lý thực sự được gọi là nó thành công hay thất bại. Vì vậy, bạn phải kiểm tra lỗi trong trường hợp đó. –

+1

Đặt mô tả không khắc phục được sự cố cho tôi. Tôi đặt mô tả về tất cả những kỳ vọng của tôi nhưng đôi khi họ vẫn gặp sự cố do những kỳ vọng chưa được thực hiện. –

Các vấn đề liên quan