Тестирование отправки формы дважды с использованием QUnit

Я пытаюсь понять поведение QUnit, используя наглость в Visual Studio. Следующий плагин JQuery должен предотвращать двойную отправку формы:

$.fn.preventDoubleSubmit = function () {
$(this).submit(function (e) {
    if (this.beenSubmitted) {
        return false;
    }
    else {
        this.beenSubmitted = true;
    }
});
return this;
};

Он используется следующим образом:

<script>
$(function () {
    jQuery('#someForm).preventDoubleSubmit();
});
</script>

Теперь я хочу протестировать его с помощью QUnit, чтобы каждый раз при отправке формы счетчик увеличивался, и, следовательно, мы могли проверить, отправлена ​​ли форма. вот так:

/// <reference path="../jquery-1.10.2.js" />
/// <reference path="extensions.js" />

(function ($) {

    var hasSubmitted = 0;
    this.$form.preventDoubleSubmit();

    this.$parent.on("submit", function () {
        hasSubmitted++;
    });

    this.$form.submit();
    equal(hasSubmitted, 1, 'It should have been submitted');

    this.$form.submit();
    equal(hasSubmitted, 1, 'It should not have been submitted');
});
})(jQuery);

Однако форма представляется дважды отправленной. Тем не менее, за пределами QUnit код работает так, как ожидалось (форма отправляется только один раз).

Что здесь происходит и/или как правильно тестировать отправку форм в QUnit и наглости? Спасибо!

p.s. пробовал использовать движки Phantom и Chrome, но результат тот же.


person Dr. Thomas C. King    schedule 04.02.2019    source источник
comment
Обработчики событий добавляются к двум разным событиям отправки: один — дочернему, а другой — родительскому. Если дочерний элемент возвращает false, не следует ли предотвратить передачу события отправки родительскому элементу?   -  person Dr. Thomas C. King    schedule 04.02.2019
comment
Хороший звонок, не заметил этого, так как было неясно, что this получил предоставленный неполный код (скобки не совпадают, поэтому предполагается, что что-то отсутствует).   -  person freedomn-m    schedule 04.02.2019
comment
Да, я думаю, вам нужно остановить распространение в дополнение к return false. Проверьте этот вопрос/ответ на двойном отправить обработчики событий.   -  person Jordan Kasper    schedule 05.02.2019