2012-09-18 26 views
26

AngularJS e2e tests ürününü deniyorum ve bir onay kutusunun işaretlenip işaretlenmediğine karar veremiyorum. AngularJS e2e testlerinde bir onay kutusu işaretlendiğinde nasıl onaylanır?

I ( Örnek test sekme son End bakınız) bir numune olarak checkbox input testini uçtan uca kullanılır.

Html pasajı:

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

Kontrolör pasajı:

İşte
function Ctrl($scope) { 
    $scope.value1 = true; 
} 

denedim budur:

1)Bu ile ekranda görüntülenen value1 görüntülendiğinde, bu örnek son uç testinde çalışır. Bunu yerel olarak test ederseniz ve {{value1}} kaldırdığınızda bağlanma sınaması başarısız olur. Gerçek dünyadaki örneklerin çoğunda, ekranda herhangi bir yerde onay kutusu değerini görüntülemiyorum.

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

değeri her zaman on varsayılan değer olarak olup kutusunun this post alınan bir kontrol halde() içinde olup olmadığını ile ilgilidir.


Not: Gelecekte Protractor ile değiştirilecektir Açısal E2E testi benziyor ben daha iyi bir yol yoktur umuyorum

cevap

17

: eleman yok veya bir yazım hatası olup olmadığını değeri hala bu örnekte olduğu gibi, 0 olurdu işaretli olmadığından şeydir. Testimde şu geçici çözümü kullandım, ama daha iyi yolu görmeyi umuyorum. Protractor kullanan herkes için

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

Teşekkür! Bunu şu anda yaptığımdan daha iyi seviyorum. Daha iyi bir yolun olması durumunda bu soruyu biraz açık tutacağım :) – Gloopy

+5

Karmada, 'attr' değil, 'prop' kullanılması gerekiyor.Diğer Google çalışanları için. – Offirmo

1

(the docs bakınız) ama doğrulayarak bu sorunu var eğer kontrol ederken

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

en az bir dezavantajı buna: bağlayıcı bu modeli eşleşen kontrol giriş elemanlarının sayısı Ben aynı sorunu vardı bu soruyu upvoted

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

47

, tam olarak bunun için isSelected() webdriver yoktur. Bunun yerine checked isteme

Yapabileceğiniz bağlıyor:

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

Bu kodu Exception'ı alıyorum: "geçersiz eleman durumu: Öğe şu anda okunamaz ve değiştirilemez". Bu – Pradeep

+0

nolu Geri Yükleme işlemcisinin nasıl çözüleceğine ilişkin herhangi bir fikriniz, [waitReady.js] (https://gist.github.com/elgalu/2939aad2b2e31418c1bb) komut dosyasıyla Stale öğesi sorununu çözdüm, bkz: http: // stackoverflow .com/questions/35533139/protractor-correct-use-of-waitready-js dosyası-in-my-tests/35536164 –

+0

Bu kabul edilen cevap olarak değiştirilmelidir –

İlgili konular