Ich versuche, einige Winkelmesser Tests zu machen und Versprechungen werden nicht innerhalb der for-Schleife gelöst.Wie geht man mit Winkelmesserversprechen innerhalb einer for-Schleife um?
In meinem Testfall möchte ich einen bestimmten Knoten in einem ng-Repeat-Element finden.
Hier ist der Code einen solchen Knoten zu finden:
var firstProfileNode = function(nodename, profile){
element.all(by.repeater('node in tree_nodes')).then(function(treeNodes){
for(var i=0; i<treeNodes.length; i++){
var node = treeNodes[i].element(by.css('.tree-dnd-handle'));
node.getText().then(function(text){
console.log(i+" : "+text);
if (profile){
var pattern = '^' +nodename+' \\(\\d+ devices\\)$';
var regx = new RegExp(pattern);
if(regx.test(text)){
console.log('found')
return node;
}
}else{
if(text === nodename){
return node;
}
}
});
}
});
};
var test = firstProfileNode('ISR', true);
Hier ist die Ausgabe der Konsole:
23 : edison (4 devices)
23 : ed21-mbr2
23 : ed22-mbr1
23 : ed22-mbr2
23 : ed21-mbr1
23 : c2800-12
23 : L1 (4 devices)
23 : c887VAM-1
23 : c891-1
23 : c887-1
23 : c3850-1
23 : ISR (3 devices)
found
23 : 3700 (2 devices)
23 : c3745-2
23 : c3745-1
23 : c2921-1
23 : c2800-11
23 : N7K (3 devices)
23 : n7k-2
23 : n7k-1
23 : n7k-3
23 : c2800-13
23 : c2800-14
Das Problem ist, dass die getText() Versprechen löst nach der for-Schleife erfolgt . Der Beweis dafür ist der geloggte 'i'-Wert, der 23 ist, die endgültige Zählung. Ich bin auf der Suche nach einer Möglichkeit, die for-Schleife warten auf das Versprechen oder eine andere Möglichkeit, den Knoten insgesamt zu finden.
Da es sich um ein Testfall ich überprüfen müssen, dass die der Filter nicht eine 'ElementFinder' zurückkehrt, die nichts zeigt. Das hat für mich funktioniert: 'expect (test.isPresent()) .beBe (wahr);' – xsdf