2012-09-18 2 views
26

나는 AngularJS e2e tests을 시도해 왔으며 확인란이 선택되었는지 여부를 결정하지 못했습니다. AngularJS e2e 테스트에서 체크 박스가 선택되었는지 확인하는 방법은 무엇입니까?

는 I합니다 ( 탭에서 시험을 종료 최종 참조) 시료로서 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을 기본값이 아닌 확인란을 this post에서 가져온 확인 상태()에 있는지 여부와 관련이 있습니다.


참고 : 그것은 미래에 Protractor로 대체됩니다 각 E2E 테스트처럼 보이는 내가 더 나은 방법이 바라고 있어요

답변

17

: 요소가 존재하지 않거나 오타가 있다면 값이 여전히이 예처럼 0이 될 것인지를 선택하지 않은 일이다. 테스트에서 다음 해결 방법을 사용했지만 더 나은 방법을 찾고 싶습니다. Protractor를 사용하는 사람들을위한

expect(element('input[ng-model="value1"]').attr('checked')).toBeTruthy(); 
+0

감사합니다! 나는 내가 현재하고있는 것보다이 점이 더 마음에 듭니다. 나는 더 나은 방법이있을 경우에 대비하여이 질문을 조금 열어 두겠다. – Gloopy

+5

카르마에서는'attr'이 아니라'prop'를 사용해야한다.동료 Google 직원에게. – Offirmo

1

을 (the docs 참조)하지만 난 확인하여이 문제를 가지고 만약 확인시

expect(element('input[ng-model="value1"]:checked').count()).toBe(1);

적어도 하나의 단점이 다음과 결합하는 모델 매칭 선택 입력 요소의 개수 저도 같은 문제를 가지고 나는이 질문을 upvoted

expect(element('input[ng-model="valueDoesNotExist"]:checked').count()).toBe(0);

47

정확히 이것에 대한 isSelected() webdriver있다. 대신 checked 요구의

은 당신이 할 수있는 속성 :

expect(element(by.model('value1')).isSelected()).toBeTruthy(); 
+0

예외를 얻는이 코드를 시도하면 : "유효하지 않은 요소 상태 : 요소가 현재 상호 작용할 수 없으며 조작되지 않을 수 있습니다". 어떤 생각을 어떻게 해결할 것인가 – Pradeep

+0

내 protractor 시대에 [waitReady.js] (https://gist.github.com/elgalu/2939aad2b2e31418c1bb) 스크립트로 부실 요소 문제를 해결했습니다. http : // stackoverflow .com/questions/35533139/각도기 - 올바른 사용 - 대기 - js - 파일 - 인 - 마이 - 테스트/35536164 –

+0

이것은 허용 대답으로 변경해야합니다 –

관련 문제