Angular и карма (жасмин): как я могу найти элемент по классу
beforeEach(function () {
html = '<div class="dropdown">'+
'<div class="trigger" >trigger</div>'+
'<div class="dropdown">body</div>'+
'<div>';
inject(function ($compile, $rootScope) {
scope = $rootScope.$new();
element = angular.element(html);
compiled = $compile(element);
compiled(scope);
scope.$digest();
// HERE NOT WORKING
var trigger == element.find('div.trigger');
var dropdown == element.find('.dropdown');
// trigger and dropdown have both length 0
});
// Test doesn't pass
it('should find the right element'), function () {
expect(trigger.hasClass('trigger')).toBe(true);
}
});
Я пытаюсь unit test директива, но я не могу найти элемент по классу.
Я хотел бы найти элемент с чем-то вроде:
var trigger == element.find('div.trigger') // doesn't find anything.
но теперь я могу сделать это вот так:
var triggers = element.find('div') // return an array of length 2.
var trigger = triggers[0];
Как найти элемент по классам?
Ответы
Ответ 1
Найти по имени класса не поддерживается функцией AngularJS find
. Вместо этого вы можете использовать ванильный javascript для этого:
var result = element[0].querySelectorAll('.findme');
Теперь вы можете проверить, имеет ли переменная result класс findme
, обернув его в элемент angular.
angular.element(result).hasClass('findme')
Ответ 2
это должно сделать трюк:
ожидать (элемент [0].querySelectorAll( "div.trigger" ) длина.).not.toBe(0);