Jasmine, problema di test addclass di interfaccia utente jQuery
-
28-10-2019 - |
Domanda
Sto cercando di testare il caso più semplice di AddClass con una durata (usando l'interfaccia utente di JQuery e il gelsomino).
Ecco il test che sta fallendo:
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();
});
});
La mia aspettativa è che non avrebbe la classe fino a dopo 1000 millisecondi. Quando provo questo dalla console del browser, si comporta in questo modo.
Questo è il controllo sanitario che ho usato (testato nella finestra del browser 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);
E questo funziona sempre. Wtf?
Soluzione
Mi sono preso il tempo per impostare un violino per questo: http://jsfiddle.net/ahus1/pzgdp/
Ho "inventato" ciò che era necessario per farlo funzionare, come il beforeEach
. Non conosco le versioni che hai usato, ma in questo campione ho usato quelle più recenti disponibili.
Ho notato che stava iniziando a funzionare solo quando ho aggiunto una classe adeguata al foglio di stile. Quando non c'è no .fdsa
Classe nel CSS, non c'è transizione e il test fallirà.
Forse il violino lo risolverà per te. Per favore guarda.
Cordiali saluti, Alexander.