字段上的maxlength不与Karma一起使用

时间:2014-06-12 13:03:40

标签: angularjs karma-runner angularjs-e2e

我有一个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中测试呢?

2 个答案:

答案 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}));
}