Sunday 5 November 2017

Waitforexpectationswithtimeout Esempio Veloce


Ho avuto poco successo praticare test di sviluppo guidato con un codice asincrono Swift 2.0 in Xcode 7. Le uniche soluzioni con le quali ho avuto alcun successo sono meccanismi di ritardo artificiosa e hacky che eludere la necessità di waitForExepectationsWithTimeout (). Vorrei effettuare test asincroni come segue, ma questo codice non riesce costantemente: Discussione 1: (. Code1, address0x6) EXCBADACCESS Quando l'aspettativa è soddisfatta (expectation. fulfill ()) al di fuori della chiusura in modo asincrono eseguito, questo test passerà come previsto (fino a quando io commento la realizzazione all'interno della chiusura). Ma così facendo, ovviamente, contrasta con l'obiettivo di sincronizzare valutazione del test. Prendo atto che, anche se il test fallisce, viene stampato il messaggio Eseguito come ci si aspetterebbe. Inoltre, se un punto di interruzione viene introdotto sul waitForExpectationsWithTimeout. la linea, il test succeedssimilarly, il test ha esito positivo quando viene introdotto un ritardo di sonno artificiale. Questo mi porta a credere che waitForExepectaionsWithTimeout () non è in attesa a tutti. Certo Sono nuovo di Xcode e Swift, quindi se mi manca qualcosa di ovvio, io apprezzo molto tutte le risposte. Cosa c'è di sbagliato con il mio codice sopra ci sono delle variabili ambientali che può fornire per aiutare il debug del problema in esecuzione: OS X El Capitan 10.11 Beta (15A263e), Xcode 7.0 beta (7A120f) ha chiesto 21 agosto 15 alla 20: 06I aveva lo stesso problema. La correzione di me sembrava aumentare l'intervallo di timeout. All'inizio ho avuto un intervallo di timeout di 1 e aumentato a 5 solo per essere al sicuro. Sembra funzionare bene ora. Im non sicuro per quanto tempo la chiamata asincrona prende, o se si può permettere un intervallo di timeout più lungo di 1, ma vale la pena un colpo. risposto 24 novembre 14 a 20:14 ho provato questo, in 50 casi ha aiutato. Si può vedere nel codice che ho postato asincrona è solo dispatchafter che attende 0.5s. Alla fine sto niling l'attesa dopo il blocco di attesa e facendo tutto afferma anche dopo il blocco di attesa. Così, non succede nulla durante l'attesa, ma adempiere. ndash Micha Hernas 25 novembre 14 a 11:18 Swift ha difficoltà particolare per mostrare il corretto eccezione punto di rottura quando le chiusure sono presenti nello stesso ambito. Ho visto lo stesso problema in un XCTestCase che ha usato dispatchafter e anche attraverso il punto di interruzione eccezione è stata la stessa linea waitForExpectationsWithTimeout il banco di prova è stato blocca a causa di un abbattuta su un oggetto nullo. So che questo non è il tuo caso, ma ogni volta che questo accade suggerisco di rimuovere le dichiarazioni di una riga alla volta e l'esecuzione del test dopo ogni rimozione. Se il test non va in crash, è stato identificato il colpevole. Questo è, purtroppo, l'opzione al momento della stesura di questo meglio ogni volta che Swift mostra un punto di interruzione un'eccezione su una linea che non ha senso, in particolare la linea infame 0 di una classe che si potrebbe vedere in strumenti di reporting incidente. Fateci sapere se avete capito crash.

No comments:

Post a Comment