Jasmine, JQuery UI addClass test problème
-
28-10-2019 - |
Question
Je suis en train de tester le cas le plus simple de addClass d'une durée (en utilisant jQuery UI et Jasmine).
Voici le test qui est défaut:
it("should use jquery ui", function() {
runs(function() {
expect(el.hasClass("fdsa")).toBeFalsy();
el.addClass("fdsa", 1000);
expect(el.hasClass("fdsa")).toBeFalsy();// this should not be failing, but it is
});
waits(1000);
runs(function() {
expect(el.hasClass("fdsa")).toBeTruthy();
});
});
Mon attente est que ce ne serait pas la classe qu'après 1000 millisecondes. Quand je teste ce à partir de la console du navigateur, il se comporte de cette façon.
Ceci est la vérification de bon sens que j'ai utilisé (testé dans la fenêtre du navigateur Jasmine).
el = $($("div")[0]);
el.addClass("qwer", 1000);
console.log(el.hasClass("qwer")); // output is "false"
setTimeout( function(){
console.log(el.hasClass("qwer")); // output is "true"
}, 1001);
Et cela fonctionne toujours. WTF?
La solution
Je pris le temps d'installer un violon pour lui: http://jsfiddle.net/ahus1/pZGdP/
« inventé » ce qui était nécessaire pour le faire fonctionner, comme le beforeEach
. Je ne connais pas les versions que vous avez utilisé, mais dans cet exemple je les plus récentes disponibles.
Je remarqué qu'il ne faisait que commencer à travailler quand je vraiment ajouté une classe propre à la feuille de style. Quand il n'y a pas de classe .fdsa
dans le CSS, il n'y a pas de transition, et le test échouera.
Peut-être que le violon résoudra pour vous. S'il vous plaît consulter.
Cordialement, Alexander.