e2e:使用input()时不考虑Maxlength.enter()

时间:2013-09-10 15:37:48

标签: angularjs

在e2e测试中,我想模拟输入字段中的用户输入。我的输入字段中包含最大长度。我想要考虑maxlength,但我没有成功找到解决方案。这是我尝试过的:

<input type="text" id="myField" maxlength="10" ng-model="myModel" />
<span>{{myModel}}</span>    

1)输入(“myModel”)。输入(“ABCDEFGHIJKLMNOPQRSTUVWXYZ”)。 myField输入和myModel模型都设置为“ABCDEFGHIJKLMNOPQRSTUVWXYZ”。预期结果:“ABCDEFGHIJ”

2)元素(“#myField”)。val(“ABCDEFGHIJKLMNOPQRSTUVWXYZ”)。 myField输入设置为“ABCDEFGHIJ”。哪个是完美的!但myModel为null。

你们有解决方案吗?我不想使用ngMaxlength,因为我想阻止用来输入10个以上的字符。

非常感谢!

1 个答案:

答案 0 :(得分:1)

你可以扩展angular-scenario dsl并使用类似于这个的函数在ngModelController中注入一个值

function typeIn(element, str) {
    var maxlength = parseInt(element.attr('maxlength'), 10);
    var value = element.val() + str;

    if (maxlength !== NaN) {
        value = value.substr(0, maxlength);
    }

    element.val(value);
    element.controller('ngModel').$setViewValue(value);
    element.scope().$apply();
}

http://jsfiddle.net/nxNm9/1/