2015-07-07 9 views
8

Durante l'esecuzione di questo test, continuo a ricevere l'errore Expected undefined to be true.Utilizzando element.find() per classe in Angular Unit testing

it('should have the right classes', function() { 
    // this doesnt work 
    expect(element.find('.exampleClass').hasClass('ng-hide')).toBe(true); 

    // but this works 
    expect(element.find('span').hasClass('ng-hide')).toBe(true); 
}); 

Come posso usare jqlite di trovare un elemento da id e class?

+0

Non è possibile. jqLite non supporta i selettori – Phil

risposta

9

Ciò è dovuto al fatto che angular-jqlite (libreria molto leggera rispetto alla stessa jquery) find è limitata alla ricerca solo dei nomi dei tag. È possibile utilizzare element.querySelector(All) e avvolgerlo in angular.element. cioè

var elm = element[0]; 
    expect(angular.element(elm.querySelector('.exampleClass')).hasClass('ng-hide')).toBe(true); 

    //Or even 
    expect(elm.querySelector('.exampleClass.ng-hide')).toBeDefined(); 

See documentation

find() - Limitato a ricerche per nome tag