抱歉,我之前没有任何浏览器工作经验,但是我们将 JQuery 1.7.1 升级到 1.8.3 后遇到单元测试失败。我必须解决这个故障。我们有这样的html页面。
<li class="my-form-item">
<label for="my_data_add_description" data-localize="my_data.add.description">Description</label>
<div class="my-form-content my-has-help">
<span type="text" id="my_data_add_description" name="data_description"></span>
<label for="my_data_add_description" class="my-optional">optional</label>
<label for="my_data_add_description" class="my-help" data-localize="my_data.add.description_help">Description</label>
</div>
</li>
JavaScript就像
var DATA_DESCRIPTION = 'data_description';
function getRules(formId) {
var rules = {};
rules[DATA_DESCRIPTION] = {
maxlength: DataModel.DESCRIPTION_MAXLENGTH
};
}
function getMessages(formId) {
var messages = {};
messages[DATA_DESCRIPTION] = {
maxlength: Localizer.getString('data description maxLength')
};
}
this.initValidator = function (formId) {
// Set validation defaults per the 'dialog' context
self.setDialogValidatorDefaults();
validator = $(formId).validate({
rules: getRules(formId),
messages: getMessages(formId)
});
};
Finally, we count the invalid elements number
this.invalidElements = function(formId) {
$(formId).submit();
return validator.invalidElements();
};
在单元测试中。我们为 my_data_add_description 设置了一个包含DESCRIPTION_MAXLENGTH+1 'a' 的字符串。
$(#my_data_add_description).val('aaa...a') // set DESCRIPTION_MAXLENGTH+1 'a' to my_data_description.
expect(formValidator.invalidElements(formId)).toEqual(1); // now we have a invalid element
这个测试总是失败,invalidElements 总是返回 0。这段代码在我们使用 JQuery 1.7.1 时运行良好,但在我们将 JQuery 升级到 1.8.3 后失败。我不明白为什么。有谁知道或遇到类似的问题?