Использование element.find() по классам в тестировании угловых модулей
При запуске этого теста я получаю ошибку Expected undefined to be true.
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);
});
Как я могу использовать jqlite, чтобы найти элемент по id
а также class
?
1 ответ
Решение
Это потому, что angular-jqlite (очень легкая библиотека по сравнению с самой jquery) find
поиск ограничен только именами тегов. Ты можешь использовать element.querySelector(All)
и завернуть в angular.element
, т.е.
var elm = element[0];
expect(angular.element(elm.querySelector('.exampleClass')).hasClass('ng-hide')).toBe(true);
//Or even
expect(elm.querySelector('.exampleClass.ng-hide')).toBeDefined();
find() - ограничен поиском по имени тега