如何在AngularJS e2e测试中检查复选框时验证?

Glo*_*opy 30 angularjs angularjs-e2e

我一直在尝试AngularJS e2e测试,并且确定是否选中了复选框.

我用端到端测试复选框输入作为样品(见端到端测试中的标签实施例).

Html代码段:

Value1: <input type="checkbox" ng-model="value1"> <br/>

控制器片段:

function Ctrl($scope) {
  $scope.value1 = true;
}
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

1) expect(binding('value1')).toEqual('true');

只要value1在屏幕上显示,这适用于样本端到端测试{{value1}}.如果在本地测试并删除`{{value1}},绑定测试将失败.在我的大多数现实世界的例子中,我没有在屏幕上的任何地方显示复选框值.

2) expect(input('value1').val()).toEqual('true');

该值将始终默认为on与复选框是否处于已检查状态无关(取自此帖子).


注意:看来Angular E2E测试将来会被Protractor取代(参见文档)

Leo*_*cci 55

对于任何使用Protractor的人来说,都有webdriver isSelected().

checked您可以执行以下操作,而不是要求属性:

expect(element(by.model('value1')).isSelected()).toBeTruthy();
Run Code Online (Sandbox Code Playgroud)


Tos*_*osh 16

我对这个问题表示赞同,因为我有同样的问题.我在测试中使用了以下解决方法,但我希望看到更好的方法.

expect( element('input[ng-model="value1"]').attr('checked') ).toBeTruthy();
Run Code Online (Sandbox Code Playgroud)

  • 在业力方面,它不是应该使用的"attr"而是"prop".对于谷歌的同行们. (5认同)