Ответ 1
Я поддержал этот вопрос, поскольку у меня была такая же проблема. Я использовал следующий обходной путь в своем тесте, но я надеюсь увидеть лучший способ.
expect( element('input[ng-model="value1"]').attr('checked') ).toBeTruthy();
Я тестировал тесты AngularJS e2e и зацикливаюсь, проверяя, установлен ли флажок.
Я использовал тест конца для конца для checkbox input в качестве образца (см. вкладку "Завершение теста" в примере).
HTML-фрагмент:
Value1: <input type="checkbox" ng-model="value1"> <br/>
Флажок контроллера:
function Ctrl($scope) {
$scope.value1 = true;
}
Вот что я пробовал:
1) expect(binding('value1')).toEqual('true');
Это работает в испытании от конца до конца, пока value1
отображается на экране с помощью {{value1}}
. Если вы проверите это локально и удалите `{{value1}}, тест привязки завершится с ошибкой. В большинстве моих реальных примеров я не показываю значение флажка на экране где угодно.
2) expect(input('value1').val()).toEqual('true');
Значение всегда будет по умолчанию равно on
и не связано с тем, установлен ли флажок в состоянии проверки (взято из этого сообщения).
Примечание. Похоже, что тестирование Angular E2E будет заменено на Protractor в будущее (см. документы)
Я поддержал этот вопрос, поскольку у меня была такая же проблема. Я использовал следующий обходной путь в своем тесте, но я надеюсь увидеть лучший способ.
expect( element('input[ng-model="value1"]').attr('checked') ).toBeTruthy();
Для тех, кто использует Protractor, именно для этого есть webdriver isSelected().
Вместо запроса атрибута checked
вы можете сделать:
expect(element(by.model('value1')).isSelected()).toBeTruthy();
Я надеюсь, что есть лучший способ, но я обошел это, проверив количество проверенных элементов ввода, соответствующих этой привязке модели:
expect(element('input[ng-model="value1"]:checked').count()).toBe(1);
По крайней мере, один недостаток этого при проверке того, что что-то не проверяется, - это если элемент не существует или существует опечатка, значение все равно будет 0, как в этом примере:
expect(element('input[ng-model="valueDoesNotExist"]:checked').count()).toBe(0);