У меня есть пакет, который проходит или не проходит, казалось бы, случайным образом, и я думаю, что это, вероятно, связано с асинхронным характером обработки событий, но я не могу найти решение. Я тестирую простую директиву, которая предотвращает действие по умолчанию при нажатии клавиши ввода (оно используется в форме в реальном приложении).
Соответствующий код:
describe('preventSubmitOnEnter', function(){
var e;
var e2;
var element;
beforeEach(function(){
element = $compile('<input type="submit" prevent-submit-on-enter />')($rootScope);
$('body').append(element);
e = $.Event('keypress');
e.keyCode = 13;
e.which = 13;
$(element).trigger(e);
e2 = $.Event('keypress');
e2.keyCode = 110;
e2.which = 110;
$(element).trigger(e2);
});
afterEach(function(){
$('input[type="submit"]').remove();
});
it('should prevent default event handling for enter keypress and do nothing otherwise', function(){
expect(e.isDefaultPrevented()).toBe(true);
expect(e.isPropagationStopped()).toBe(true);
expect(e2.isDefaultPrevented()).toBe(false);
expect(e2.isPropagationStopped()).toBe(false);
});
})