2014-12-21 18 views
6

yerine getirilmemesi durumunda EXC_BAD_ACCESS atma. XCTestCase waitForExpectationsWithTimeout: işleyicisi: beklenti Ben XCTestExpectation kullanarak bir zaman uyumsuz çağrı test ediyorum

completionHandler verilen 1 saniye zaman aşımı önce yürütülür Aşağıdaki kod işleri (test başarılı)

. completionHandler denilen değilse

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) 
    } 

Ancak, dolayısıyla beklenti yerine waitForExpectationsWithTimeout çağrılırken bu imkansız görmeyi kolaylaştırır çünkü çok kullanışlı olmayan bir EXC_BAD_ACCESS olsun bir deney hatası alma, yerine getirilmemesi tüm test paketi sonuçları.

Bunu nasıl önleyebilirim ve normal bir sınama hatası alabilir miyim?

cevap

4

EXC_BAD_ACCESS'e neden olan şey, beklentiyi oluştururken bir nil tanımını geçiriyor gibi görünüyor.

Bu çağrıya herhangi bir dizeyi iletmek, çalışmasını sağlar ve beklenti karşılanmadığında beklenen test başarısızlığını alırız.

+2

İşleyici engelleme parametresi parametresinin "nil" olmadığına karar verdiğimde de benzer bir hata oluştu. İşleyici, başarılı olup olmadığını veya başarısız olup olmadığını çağrılır. Yani, bu durumda bir hata kontrol etmeniz gerekiyor. –

+1

Açıklama, ayarın benim için sorunu gidermez. Tüm beklentilerime açıklık getirdim, ancak hala yerine getirilmemiş beklentiler nedeniyle çöküyorlar. –

İlgili konular