2016-04-21 5 views
0
Person.prototype.checkAssignmentIncomplete = Person.chain(function (data) { 
var self = this; 

var assignmentPane = self.browser.element(by.id(data.testId + '#' + data.deadline)); 
expect(assignmentPane.isPresent()).toBe(true); 

assignmentPane.click(); 
self.browser.waitForAngular(); 

var foundName = false; 
var promises = []; 
element.all(by.binding('member.user.fullname')).each(function (nameColumn) { 
    var row = nameColumn.element(by.xpath('..')); 
    var promise = nameColumn.getText().then(function (name) { 
     foundName = foundName || data.name === name; 
     if (foundName) { 
      var reviewButton = row.element(by.className('icon')); 
      expect(reviewButton.isPresent()).toBe(false); 
     } 
    }); 
    promises.push(promise); 
}); 

q.all(promises).then(function() { 
    expect(foundName).toBe(true); 
}); 

}); 

Ich habe Probleme mit meinem automatisierten Testen in Protractor, scheint zu denken, dass foundName falsch ist und ich weiß für eine Tatsache, dass, wenn dies läuft, es tatsächlich wahr ist. Meine Schlussfolgerung ist, dass die Expect-Funktion ausgeführt wird, bevor das Versprechen abgeschlossen ist.Wie kann ich ein Versprechen zurückgeben, bevor der Winkelmesser Läufe erwartet?

Ich frage mich, wie ich sicherstellen kann, dass das Versprechen abgeschlossen ist, bevor ich den foundName in der Funktion expect überprüfen?

+0

die Versprechen Sie explizit müssen beheben Führen Sie den '$ scope. $ Digest()' – Jagrut

+0

Danke für Ihre Antwort, aber wir können nicht in Progractor Tests Umfang verwenden. – MaxwellLynn

+0

'all' /' each' sind asynchron, oder? – Bergi

Antwort

1

Dies ist nicht wirklich eine ideale Lösung, aber das Versprechen nach jeder Funktion hinzuzufügen schien das Problem zu beheben, das ich hatte.

Verwandte Themen