2016-06-13 20 views
7

Testlerden birinde, 3 öğeden birinin mevcut olduğunu iddia etmeliyiz. Şu anda protractor.promise.all() ve Array.reduce() kullanarak bunu yapıyor:Bir dizinin doğru değerini düşürdüğünü doğrulayın

var title = element(by.id("title")), 
    summary = element(by.id("summary")), 
    description = element(by.id("description")); 

protractor.promise.all([ 
    title.isPresent(), 
    summary.isPresent(), 
    description.isPresent() 
]).then(function (arrExists) { 
    expect(arrExists.reduce(function(a,b) { return a || b; })).toBe(true); 
}); 

açıkça vaat çözmeden Jasmine ile bunu çözmek için daha iyi bir yolu var mı? Özel bir maççıya mı ihtiyacımız var yoksa yerleşik maççılarla çözmek mümkün mü?

+1

Not (fonksiyon, (a) {a dönüş;}) '. Jasmine ile ['done' argümanını' '' geri aramada] kullanırsınız (http://jasmine.github.io/2.0/introduction.html#section-Asynchronous_Support) ve test bittiğinde bunu çağırın. . Daha iyi bir yol olduğunu düşünmüyorum. Çözülecek sözleri beklemek için neyse ihtiyacın var. – trincot

+0

@trincot için teşekkürler. Muhtemelen şunu söylemeliyim ki, ['beklenen()' sözümüzü örtük olarak çözüme kavuşturmak için İletici’de “yamalı” dır (http://www.protractortest.org/#/control-flow#protractor-adaptations). Çoklu vaatlerin sonuçlarını birbirleriyle birleştirmek zorundadır, bu durumda yardımcı olmayabilir. – alecxe

+1

İlk değer olarak "false" değerini sağlamanız gerekir, böylece boş dizilerde de çalışır. Ya da sadece .some (Boole) 'yi kullanın. – Bergi

cevap

2

Kontrol bu i ExpectedCondition döndüren işlev yürütülürken am

let EC = protractor.ExpectedConditions; 

let title = EC.visibilityOf($("#title")), 
    summary = EC.visibilityOf($("#summary")), 
    description = EC.visibilityOf($("#description")); 

expect(EC.or(title, summary, description)()).toBeTruthy('Title or summary or description should be visible on the page') 

Bildirimi - bu yüzden yerine fonksiyonunun (mantıksala çözüleceğini Promise) o fonksiyonun sonucu alıyorum.

yerine .visibilityOf (gerekli olduğunu fark ettiyseniz

http://www.protractortest.org/#/api?view=ExpectedConditions.prototype.or

+0

Beklenen Koşulları kullanmak için harika bir fikir, hiç düşünmemiştim. Teşekkürler. – alecxe

3

Sadece tek bir seçici ile tüm öğelerini almak ve sayısı sıfır daha üstün olduğunu iddia olabilir) .presenceOf() kullanabilirsiniz: yerine kullanabilir reduce` `arasında` arrExists.some

var title_summary_description = element.all(by.css("#title, #summary, #description")); 
expect(title_summary_description.count()).toBeGreaterThan(0); 
+0

Kutudan çıkmış ilginç düşünce, teşekkürler! – alecxe

İlgili konular