Assermer un tableau réduit à vrai

Dans l'un des tests, nous devons affirmer que l'un des 3 éléments est présent. Actuellement, nous le faisons en utilisant le protractor.promise.all() et Array.reduce() :

 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); }); 

Y a-t-il une meilleure façon de le résoudre avec Jasmine sans résoudre les promesses explicitement? Aurions-nous besoin d'un matcher personnalisé ou il est possible de résoudre avec les allumettes intégrées?

Vérifie ça:

 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') 

Notez que j'exécute la fonction que ExpectedCondition renvoie – donc je reçois le résultat de cette fonction (Promesse qui sera résolu à boolean) au lieu de fonction.

Vous pouvez utiliser .présenceOf () si vous en avez besoin à la place .visibilityOf ()

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

Vous pouvez simplement obtenir tous les éléments avec un seul sélecteur et affirmer que le nombre est supérieur à zéro:

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