obtenir le texte de l'élément pendant angulaire $timeout rapporteur
-
21-12-2019 - |
Question
Note:à l'aide de la MOYENNE de Moka, de Express, Angulaire, et le Nœud de l'application
Je suis en train d'apprendre comment faire e2e test et j'ai construit une petite application à tester.Une chose qu'il ne est chaque fois que vous effectuez une action, il affiche un message pour les X secondes et puis s'en va.Je suis en utilisant angulars $timeout.
$scope.displayMessage = function(messageIn, borderColor){
var timeoutTime = 5000; //clear the message after x seconds
$scope.borderType = "1px solid " + borderColor;
$scope.messages = messageIn;
$scope.visibility = true; //reveal the div
$timeout.cancel($scope.timeout); //cancel any previous timers
$scope.timeout = $timeout(function(){ //Set and start new timer.
$scope.visibility = false;
$scope.messages = "";
}, timeoutTime);
};
Maintenant, je vais essayer de tester ça.Actuellement, j'ai
it("should display message", function(done){
var button = element(by.id("getStudents"));
console.log("clicking button");
var messageElem = element(by.binding("messages"));
button.click().then(function () {
console.log("button clicked");
messageElem.getText().then(function(text){
console.log("The text should equal: " + text);
});
//expect(messageElem.getText()).toBe("Students retrieved");
console.log("test executed");
});
done();
});
Mais il semble être en attente jusqu'à ce que après le délai d'attente pour faire le messageElem.getText().then()
à quel point la div a été effacé.Le "test exécuté" journal d'impression pendant le délai d'attente, mais pas le "getText()" de la fonction.Je suppose que cela a quelque chose à voir avec angulars cycle de vie?
Oh, et voici le code HTML (en Jade format)
div(ng-model="messages",ng-show = "visibility", style = "clear:both;padding-top:3em;border:{{borderType}};text-align:center;")
h3
{{messages}}
ignorer mon style, j'ai été trop paresseux pour faire un fichier css pour cette application de test :D
Autres conseils
J'ai piraté autour de cela, utilisez le code ci-dessous bloc.J'ai eu une barre de notification à partir d'un 3ème partie nœud package (ng-notifications-bar) qui a utilisé $timeout au lieu de $intervalle, mais il faut s'attendre à ce que le texte de l'erreur a été d'une certaine valeur.J'ai mis a utilisé une courte nuit de sommeil() pour permettre à la barre de notification animation, de commutation de ignoreSynchronization vrai, alors Rapporteur de ne pas attendre le $timeout à la fin, de mettre mon expect(), et la commutation de la ignoreSynchronization dos à faux donc Rapporteur pouvez continuer à l'essai dans les AngularJS la cadence.Je sais que les couchages ne sont pas l'idéal, mais ils sont très courts.
browser.sleep(500);
browser.ignoreSynchronization = true;
expect(page.notification.getText()).toContain('The card was declined.');
browser.sleep(500);
browser.ignoreSynchronization = false;