我试图在Visual Studio中使用Chutzpah来了解QUnit的行为。以下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和Chutzpah中测试表单提交的正确方法是什么?谢谢!
p.s。,尝试使用Phantom和Chrome引擎,但结果相同。