Tuesday 10 October 2017

Crash Test Waitforexpectationswithtimeout


Asincrona Test con Xcode 6 Nel 2013, Apple ha venduto un framework di test rinnovata in Xcode chiamato XCTest, e c'era molta gioia. Il quadro vecchio hadnt stato aggiornato negli anni, e una serie di strumenti di test di terze parti e framework era nata per fornire nuove caratteristiche e funzionalità. E 'stato bello vedere gli strumenti integrati a ottenere di nuovo un po' di amore, e quest'anno, Apple è la spedizione di un paio di caratteristiche con Xcode 6 che mancavano da ultimo anni aggiornamento. Una Im particolarmente felice di vedere è il supporto per i test asincrono. Se abbiamo un test che deve dare il via un'attività asincrona, se viene eseguito in un altro thread o nei fili principali runloop, come possiamo provarlo in considerazione una richiesta web. Potremmo dare il via una richiesta Web e passare in un blocco di completamento, quindi fare le nostre affermazioni di prova, sia nel gestore di completamento o meno. Tuttavia, poiché la richiesta Web hasnt ancora stato ancora fatto, e tanto meno una risposta ricevuto né ha il nostro blocco di completamento stato chiamato, il nostro metodo di prova sta per uscire prima che le affermazioni sono mai testati. Vediamo un test per una classe che scarica le pagine web. Normalmente, ci andrei vogliamo fare richieste web reali in test. Invece, mer stub le richieste utilizzando qualche strumento (Im parziale OHHTTPStubs). Ma ai fini di questi esempi, ben rompere alcune regole e fare richieste reali web. Siamo in grado di dare alla classe in prova un blocco URL e il completamento del gestore, e sarà scaricare la pagina e richiamare il blocco, passando una stringa contenente la pagina Web o una stringa vuota se si verifica un errore. La sua non è una grande API, ma ancora una volta, sono stati rompendo alcune regole. Tuttavia, il codice di prova di seguito non è mai sta per fallire. Il metodo di prova restituirà senza dare il blocco completionHandler la possibilità di essere chiamato. Prima versione Xcode 6s di XCTest, usando solo quello che viene in latta con Xcode, abbiamo potuto sedersi e di spin in un ciclo while che chiama i fili conduttori correre ciclo fino a quando arriva la risposta o un periodo di timeout è trascorso. Heres lavoro codice di prova, alla vecchia maniera. Il ciclo while esegue i principali fili corrono ciclo di 10 millisecondi alla volta fino a quando la risposta arriva, o fino a 5 secondi trascorre senza che sia arrivato. Questo è utile. La sua non è terribile. Non è la fine dello sviluppo di software worldbut la sua non grande. Ora c'è un modo migliore. Alte aspettative con Xcode 6, Apple ha aggiunto aspettative di prova per il quadro XCTest sotto forma di classe XCTestExpectation. Quando istanziamo un'aspettativa di prova, il framework di test prevede che si realizzerà ad un certo punto in futuro. Il nostro codice di prova soddisfa l'aspettativa nel blocco di completamento con una chiamata al metodo XCTestExpectation soddisfare. Questo prende il posto di impostazione di un flag come responseHasArrived nell'esempio precedente. Quindi diciamo al framework di test di aspettare (con un timeout) per le sue aspettative da soddisfare attraverso il metodo XCTestCase waitForExpectationsWithTimeout: gestore. Se il gestore di completamento viene eseguito entro il timeout e chiede adempiere. allora tutte le aspettative prove saranno state soddisfatte. In caso contrario, la prova deve vivere una triste, solitario, insoddisfatto esistenza fino a quando non esce dallo scope. E vivendo una triste, solitario, insoddisfatto esistenza, voglio dire che l'attesa non supera il test su timeout. L'aspettativa fallito non dovrebbe sentire così abbattuto. Ricordate che un risultato in mancanza non è il segno di una cattiva prova di un risultato indeterminato è. Tale aspettativa può sentire l'orgoglio in cui dichiara fallimento. Ecco un esempio utilizzando XCTestExpectation: Creare l'attesa con una descrizione per rendere i risultati più leggibili. Nel blocco di completamento, chiamata aspettativa adempiere a dire la prova che questa aspettativa è, infatti, stata soddisfatta. Poi appendere fuori nella waitForExpectationsWithTimeout: gestore: fino a quando viene inviata la richiesta, la risposta arriva e il nostro gestore di completamento si chiama o si verifica il timeout. Quello è il buon vecchio Objective-C, ma possiamo anche farlo in Apples lucido nuova lingua Swift. E questo è tutto. La sua una classe facile da usare per testare codice asincrono. Cant ottenere abbastanza informazioni su iOS 8 e Swift unirsi a noi per i nostri iOS che iniziano con Swift e iOS avanzate bootcamps. introduction. js Jasmine è un framework di sviluppo comportamento-driven per testare codice JavaScript. Essa non dipende da altri framework JavaScript. Non richiede un DOM. E ha una sintassi pulita, evidente in modo che si può facilmente scrivere i test. Questa guida è in esecuzione contro versione Jasmine FATTA in fase di esecuzione. Distribuzione Standalone La pagina di stampa ha collegamenti per scaricare la distribuzione stand-alone, che contiene tutto il necessario per avviare l'esecuzione del gelsomino. Dopo aver scaricato una versione particolare e decomprimere, aprendo SpecRunner. html eseguirà le specifiche inclusi. You39ll notare che entrambi i file di origine e le loro rispettive specifiche sono legati nel ltheadgt del SpecRunner. html. Per iniziare a utilizzare Jasmine, sostituire i file sourcespec con il proprio. Suites: Descrivi la tua Test Una suite di test inizia con una chiamata alla funzione globale Jasmine descrivere con due parametri: una stringa e una funzione. La stringa è un nome o il titolo per una suite specifica - di solito quello che è in fase di test. La funzione è un blocco di codice che implementa la suite. Specifiche sono definiti chiamando la funzione del gelsomino globale esso. che, come descrivere prende una corda e una funzione. La stringa è il titolo della specifica e la funzione è la specifica, o il test. Un spec contiene uno o più aspettative che mettono alla prova lo stato del codice. Una aspettativa in Jasmine è una affermazione che è vera o falsa. Un spec con tutte le vere aspettative è una specifica di passaggio. Un spec con una o più false aspettative è una specifica mancanza. It39s Basta Funzioni Dal descrivono e blocchi sono funzioni, che può contenere qualsiasi codice eseguibile necessario per implementare il test. Si applicano le regole di ambito JavaScript, in modo da variabili dichiarate in una descrivere sono a disposizione per qualsiasi blocco all'interno della suite. Jasmine ha funzioni doppie test chiamato spie. Una spia può stub qualsiasi funzione e tiene traccia le chiamate verso di esso e tutti gli argomenti. Una spia esiste solo nel descrivere blocco o in cui è definito, e verrà rimosso dopo l'spec. Ci sono matchers speciali per l'interazione con le spie. Questa sintassi è cambiato per Jasmine 2.0. Il matcher toHaveBeenCalled restituirà true se la spia è stato chiamato. Il matcher toHaveBeenCalledWith restituisce vero se la lista degli argomenti corrisponde a qualsiasi delle chiamate registrate alla spia.

No comments:

Post a Comment