2013-11-15 16 views
5

sto testando un evento di messa a fuoco in angularjs utilizzando casi di test karma. Ma l'elemento non si focalizza. Subito dopo lo faccio element.focus() e verificare se l'elemento è focalizzata, ottengo falso. E document.activeElement a quel punto è tutto il corpo.Casi Karma test: evento attenzione

prega di suggerire una soluzione. Grazie

risposta

7

(Questa risposta ispirata Testing for focus an AngularJS directive)

È necessario aggiungere il vostro elemento al corpo del documento in modo che document.activeElement di giocare con lui.

Prima di chiamare element.focus(), fare questo:

element.appendTo(document.body); 

Inoltre, se si sta facendo questo in unit test mi sento di raccomandare che si rimuove l'elemento dopo il test, altrimenti ogni test si aggiungerà un altro elemento da il corpo (e potrebbe influenzare i risultati degli altri test).

afterEach(function() { 
    element.remove(); 
} 
+2

Questo ha funzionato per me (principalmente). Non sto usando JQuery, quindi 'element.appendTo' non l'ha tagliato. Avevo bisogno di fare 'document.body.appendChild (elemento [0]);' – mgilson

Problemi correlati