2017-07-11 1 views
0

Ich habe eine Anwendung, die Angular Growl v2 verwendet und in meinem Winkelmesser-Test möchte ich sicherstellen, dass das Growl-Ereignis passiert und dass es den richtigen Text enthält. So habe ich die folgende Kontrolle:Winkelmesser und unerwünschte warten

var expectGrowlMessage = function(text) { 
    var growl = element(by.css('.growl-message')); 
    # Protractor stops here until growl div is removed 
    browser.wait(EC.presenceOf(growl), 3004, 'Waiting for growl to appear'); 
    expect(growl.getText()).toContain(text); 
    browser.wait(EC.not(EC.presenceOf(growl)), 7002, 'Waiting for growl message to disappear'); 
}; 

Was ich sagen kann (über console.log) passiert ist, dass Winkelmesser die expectGrowlMessage eingeben und dann vor der ersten browser.wait zu stoppen. Im Browser kann ich die Growl-Nachricht sehen, so dass die erste Wartezeit erfolgreich sein sollte. Sobald das Knurrenelement entfernt ist, dh wenn der Winkelmesser zu der ersten Warteprüfung übergeht, wird dies offensichtlich fehlschlagen.

Ich habe versucht browser.driver.wait und browser.waitForAngular() von denen beide nicht zu funktionieren scheinen.

Irgendwelche Vorschläge, was Winkelmesser macht und wie es funktioniert?

Antwort

1

über spezifisch Versuchen Sie, was Sie wollen, um Dinge zu tun, durch die Verwendung von „und dann“:

var expectGrowlMessage = function(text, timeout = 3004) { 
    var growl = element(by.css('.growl-message')); 
    var EC = protractor.ExpectedConditions; 
    browser.wait(EC.presenceOf(growl), timeout).then(function(){ 
     expect(growl.getText()).toContain(text); 
    }); 
}); 
Verwandte Themen