Недетерминированный модульный тест в AngularJS Jasmine

У меня есть пакет, который проходит или не проходит, казалось бы, случайным образом, и я думаю, что это, вероятно, связано с асинхронным характером обработки событий, но я не могу найти решение. Я тестирую простую директиву, которая предотвращает действие по умолчанию при нажатии клавиши ввода (оно используется в форме в реальном приложении).

Соответствующий код:

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);

            });
        })

person Derek    schedule 17.04.2015    source источник
comment
Кроме того, просто чтобы уточнить, тесты не проходят первые два утверждения, никаких других ошибок не выдается.   -  person Derek    schedule 18.04.2015
comment
Может быть, глупый вопрос, но почему бы просто не использовать type=button, который не вызывает submit при вводе в форму?   -  person shaunhusain    schedule 18.04.2015
comment
@shaunhusain это справедливое замечание, и я мог бы в конечном итоге сделать это, но я хотел бы понять, почему вышеперечисленное время от времени терпит неудачу.   -  person Derek    schedule 18.04.2015
comment
Да, это определенно понятно, у вас нет четкого ответа, это похоже на территорию тестирования e2e/транспортира, поскольку оно касается взаимодействия с вводом и нажатием кнопок в реальном браузере, но не уверен, что нужно сделать в модульный тест здесь, чтобы сделать это согласованным.   -  person shaunhusain    schedule 18.04.2015