在 Angular 单元测试中通过 class 使用 element.find()

Using element.find() by class in Angular Unit testing

当运行这个测试时,我一直收到错误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 通过 idclass 查找元素?

这是因为 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();

See documentation

find() - Limited to lookups by tag name