2014-09-22 4 views
5

Supponiamo che Javascript esegua alcuni calcoli di elementi/posizioni, ad es. nella direttiva angularjs.Dovremmo usare i CSS nei test di livello dell'unità Karma nei progetti AngularJS

Per testare questo codice Javascript è opportuno includere CSS in karma.conf.js?

Vedo che alcuni progetti popolari includevano file css.

ad es. ng-grid progetto karma.conf.js

'dist/release/ui-grid.css', 

Le domande sono più verso il confine di test E2E vs test di unità.

+1

Io non capisco che cosa si avrebbe bisogno il CSS per –

+0

direttive Molte volte @StephanMuller usare template HTML? Url. Quando hai HTML avrai CSS. Le funzioni di post-link potrebbero dover calcolare le posizioni, ad es. Posizionamento della punta dell'utensile utilizzando solo offset offsetLe proprietà di sinistra che vengono definite se il CSS è stato caricato correttamente. Senza questo la logica di calcolo (oltre l'addizione/sottrazione) non può essere testata perché offsetLeft non è affidabile. – bhantol

+1

Penso che la risposta dovrebbe essere sì. Se stai usando le quote o le coordinate degli elementi nelle direttive e vuoi testarle, allora potrebbe avere senso utilizzare il file css reale invece di impostare in linea all'interno del test, forse potrebbe essere considerato un test di integrazione, css in linea forse preferito per unità pura test –

risposta

4

Per quanto ho capito la tua domanda, ecco il mio prendere su questo -

prova nell'unità per controllare le funzionalità del particolare codice sorgente.

ci sono seguenti modi per fare test di unità per una funzione

  1. passare l'input per funzionare e testare l'uscita
  2. passare l'input e testare ogni cosa (gradini) lo fa per manipolare quell'ingresso
  3. prova se chiamare nulla funzione esterna per ottenere qualsiasi ingresso & utilizzare il valore spense come un oggetto/valore restituito da questa funzione esterna

Se un metodo in direttiva sta manipolando css, allora dovrebbe aggiungere e rimuovere la classe CSS all'interno di quel metodo, non è vero? Quindi nelle asserzioni è necessario verificare solo se una classe particolare è presente o meno. (Nella maggior parte dei casi su cui ho lavorato)

Il file CSS è un file esterno ed è una dipendenza per il file di origine javascript & che deve essere trattato come dipendenze.

Dove il test di e2e è un test di integrazione simile, per assicurarsi che tutti i file di integrazione funzionino perfettamente. Quindi, se abbiamo bisogno di testare le modifiche CSS, dovremmo controllare con e2e.

Here è un'interessante conferenza sul test unitario di Miško Hevery. Non è legato al CSS, ma in generale Testing Unità & su dipendenze manipolazione (17:50)

+0

Non è possibile aggiungere o rimuovere CSS. Il codice HTML di caricamento delle direttive che può avere funzioni CSS e PostLink potrebbe dover posizionare correttamente gli elementi. – bhantol