我有一个maxlength为6的字段,但不知何故,以下输入数据的方式导致7个字符被允许:
<input type="text" name="myName" maxlength="6" ng-model="myModel">
这是测试位:
input('myModel').enter('1111117');
expect(input('myModel').val()).toBe(111111);
这是结果
expected 111111 but was "1111117"
我想这与使用的模型而不是真实场有关,但我如何在Karma中测试呢?
答案 0 :(得分:3)
问题是由于maxlength
仅限制用户的输入,而不是输入的实际值。例如,如果您尝试在输入中使用jQuery&#39; val()
,它将接受任意长度的值。
我尝试以更复杂的方式模拟输入,例如触发键盘事件或third party tools,但没有成功。看起来任何改变输入值的编程方式都不受maxlength
的限制。
答案 1 :(得分:0)
我知道这是一个古老的问题,但这可能会对遇到相同问题的人有所帮助。
在我的情况下,我只是在用于设置输入值的函数中手动检查了输入的值长度:
function insertKey(input: HTMLInputElement, key: string) {
input.dispatchEvent(new KeyboardEvent('keydown', {key: key}));
if (input.value.length < input.maxLength) {
input.value += key;
input.dispatchEvent(new KeyboardEvent('change', null));
}
input.dispatchEvent(new KeyboardEvent('keyup', {key: key}));
}