Использование 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() - ограничен поиском по имени тега

Другие вопросы по тегам