2012-12-01 7 views
5

Ho bisogno di scrivere test di unità per l'applicazione AngularJS che utilizza pesantemente l'API di Google Maps v3 (calcolo delle distanze, creazione di marker nella mappa ecc.) E so che dovrei in qualche modo creare o mock map canvas in modo da poter unire le funzioni di test che utilizzano l'API di Google Maps e creare marker su quella tela ma non sono sicuro di come farlo e non sono riuscito a trovare alcun tutorial/risorsa su come testare l'unità (preferibilmente con AngularJS/Jasmine) applicazioni basate sull'API di Google Maps.AngularJS: applicazione di test dell'unità basata sull'API di Google Maps

Qualsiasi esempio di lavoro, anche il più semplice, di test unitari come questo sarebbe molto apprezzato.

+3

Hai creato un servizio per iniettare API di Google Maps? Se è così, allora il test unitario sarebbe facile ... altrimenti, il test unitario sarà molto più difficile. –

+0

@blesh - grazie ... ma temo di non seguirmi. – keepsea

+1

Il test dell'unità non deve verificare se google è vivo o si comporta in modo appropriato. Quindi in pratica non devi testare Google. Verifica se il tuo controller, servizio, ecc. Invia le chiamate giuste ai servizi Google necessari. Per farlo, nel tuo test non usi google ma qualche "finto" google che hai creato (un cosiddetto finto). Un servizio che dichiara di essere il servizio di Google Maps ma in realtà è piuttosto stupido e restituisce solo i risultati definiti dall'utente. Hai capito dove sta andando? –

risposta

7

Dai tuoi commenti sopra, sembra che tu abbia bisogno delle seguenti informazioni (se non lo fai per favore non tener conto): questa è una MOLTA spiegazione che dovrei darti che sarà un romanzo se avessi battuto a macchina tutto su In quanto tale, vi collegherò un sacco di articoli che faranno un lavoro molto migliore di quello che posso di spiegarvi ogni pezzo.

Angolare è tutto su dependency injection. L'iniezione di dipendenza è vitale se si sta effettuando un test di unità. Per completezza supporrò che tu non sappia cosa sia l'iniezione di dipendenza e fornisci una spiegazione rapida (perdonami se già lo sai): l'iniezione di dipendenza sta progettando il tuo codice in modo tale che qualsiasi dipendenza esterna possa essere "iniettata" discussione. Una dipendenza sarebbe qualsiasi codice esterno al blocco di codice in cui si trova. Questo è il motivo per cui in Angular devi includere $ scope nei tuoi controller, o forse $ http o $ resource ... perché quelli sono iniettati nel controller . Nei test unitari, questo ti permette di prendere in giro quegli oggetti e di passarli dentro, così puoi vedere i risultati del test in modo controllato.

Se avete intenzione di utilizzare un po 'di codice esterno (API di Google Maps, Facebook API, ecc) nel controller, si vuole iniettare quel codice avvolgendolo in un service e injecting it into your controller.

Inoltre, è possibile utilizzare create a directive per il pezzo di mappa effettivo come manipolazione DOM (come ad esempio ciò che viene fatto dalla nuova mappa() nell'API di Google Maps) nella direttiva. Quindi testeresti la direttiva. Per una guida sulle direttive di test, consiglierei di cercare su Angular's directive tests in their Github repository as examples. Fondamentalmente $ compilate le direttive e testate i risultati della manipolazione.

Problemi correlati