2012-09-18 9 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から採取したチェック状態であるか否かに関係しないであろう。


注:角度E2Eテストは、将来的にProtractorに置き換えられますように見えます(the docsを参照)

答えて

17

。 テストでは次の回避策を使用しましたが、より良い方法を見ていきたいと考えています。 Protractorを使用して誰のための

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

感謝を!私はこれが現在私がやっていることよりも好きです。私はこの質問をちょっと開いたままにしておきます。より良い方法がある場合に備えてください: – Gloopy

+5

カルマでは、それは 'attr'ではなく' prop'を使うべきです。仲間のgooglersのために。 – Offirmo

1

私はより良い方法があると願っていますが、私は検証することでこの問題を回避ましたかどうかをチェックするとき、これに

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

少なくとも一つの欠点を:結合がモデルに一致する確認入力要素の数何かがチェックされていない要素が存在しない場合であるか、タイプミスがあった場合、値はまだこの例のように0になります:私は同じ問題を持っていたとして、私はこの質問をupvoted

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

47

、まさにこのためwebdriverをisSelected()があります。

代わりのcheckedを求めるには、あなたが行うことができます属性:

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

このコードでExceptionを取得しようとすると、「無効な要素状態:要素は現在対話可能ではなく、操作できない可能性があります。どのようにこの問題を解決するためのアイデア – Pradeep

+0

私のprotractorの日に戻って、私は[waitReady.js](https://gist.github.com/elgalu/2939aad2b2e31418c1bb)スクリプトでStale要素の問題を解決しました:http:// stackoverflow .com/questions/35533139 /分度器 - 正しい使用 - 待機中 - js-ファイル - インザ - テスト/ 35536164 –

+0

これは受け入れられる回答に変更する必要があります –

関連する問題