J'utilise le framework de test automatisé, Protractor.Résoudre la promesse conditionnellement
J'ai découvert que Protractor utilise fréquemment promises
pour résoudre de façon asynchrone l'évaluation de code. Question: Comment puis-je résoudre manuellement une promesse à une valeur spécifique, une fois qu'une condition est remplie?
Mise à jour: 09/08/2017
Désolé, j'étais un peu clair sur promises
. J'ai pu obtenir ce fonctionne correctement maintenant avec:
// match variable
var match = false;
// get all elements with `div` tag
var scanElements = element.all(by.css('div')).each(function(el) {
// get text content of element
el.getText().then(function(text) {
// split words into array based on (space) delimeter
var sp = text.split(' ');
for (var i = 0; i < sp.length; i++) {
if (sp[i] == 'Stack Overflow') {
match = true;
}
}
});
});
// on complete
scanElements.then(function() {
if (match) {
console.log('Status: Found match!');
}
else {
console.log('Status: No match');
}
});
Je n'ai pas utiliser protractor, mais je l'ai utilisé BlueBird et Q. Sur ces cadres, vous avez la possibilité de '' reject' par return deferred.reject (data) 'la promesse et attrape le statut avec un gestionnaire' .fail ((data) =>) '. Ou vous pouvez également résoudre la promesse avec différentes valeurs comme 'deferred.resolve (myConditionalData1)' ... ou 'deferred.resolve (myConditionalData2)'. Vous pouvez résoudre la promesse de plusieurs façons, avec plusieurs valeurs de données, il suffit de les gérer correctement. Je n'ai pas ajouté cela comme réponse, parce que je n'ai pas travaillé avec le framework que vous utilisez. J'espère que cela aide –