Тестирование для фокусировки директивы AngularJS
Как вы можете проверить фокус в директиве AngularJS? Я ожидал бы следующее работать:
describe('focus test', function(){
it('should focus element', function(){
var element = $('');
// Append to body because otherwise it can't be foccused
element.appendTo(document.body);
element.focus();
expect(element.is(':focus')).toBe(true);
});
});
Тем не менее, это работает только в IE, это не работает в Firefox и Chrome
Обновление: решение @S McCrohan работает. Используя это, я создалtoHaveFocus' согласовани:
beforeEach(function(){
this.addMatchers({
toHaveFocus: function(){
this.message = function(){
return 'Expected \'' + angular.mock.dump(this.actual) + '\' to have focus';
};
return document.activeElement === this.actual[0];
}
});
});
Который используется следующим образом:
expect(myElement).toHaveFocus();
Обратите внимание, что для тестов, связанных с фокусом, скомпилированный элемент должен быть присоединен к DOM, что можно сделать так:
myElement.appendTo(document.body);