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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top