Недетерминиран единичен тест в AngularJS Jasmine

Имам пакет, който преминава или се проваля привидно на случаен принцип и мисля, че вероятно е нещо общо с асинхронния характер на обработката на събития, но не мога да намеря решение. Тествам проста директива, която предотвратява действието по подразбиране при натискане на клавиш enter (то се използва във формуляр в действителното приложение).

Подходящ код:

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
comment
Възможен дубликат на Защо моите тестове за жасмин се провалят по тази директива?   -  person Paul Sweatte    schedule 22.04.2017