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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top