在Angular Unit测试中按类使用element.find()

cus*_*ice 11 unit-testing angularjs jqlite

运行此测试时,我不断收到错误 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);
});
Run Code Online (Sandbox Code Playgroud)

如何使用jqlite通过找到一个元素id,并class

PSL*_*PSL 11

这是因为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();
Run Code Online (Sandbox Code Playgroud)

见文档

find() - 仅限于按标签名称查找