2

addClassの最も単純なケースを期間でテストしようとしています(jQuery UIとJasmineを使用)。

失敗したテストは次のとおりです。

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();
  });
});

私の期待は、1000ミリ秒が経過するまでクラスがないことです。ブラウザコンソールからこれをテストすると、このように動作します。

これは、私が使用した健全性チェックです(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);

そして、これは常に機能します。WTF?

4

1 に答える 1

1

私はそれのためにフィドルをセットアップするのに時間がかかりました:http://jsfiddle.net/ahus1/pZGdP/

のように、それを機能させるために必要なものを「発明」しましたbeforeEach。使用したバージョンはわかりませんが、このサンプルでは利用可能な最新のものを使用しました。

スタイルシートに適切なクラスを実際に追加して初めて、機能し始めていることに気付きました。CSS にクラスがない場合.fdsa、遷移はなく、テストは失敗します。

フィドルが解決してくれるかもしれません。ご覧ください。

よろしく、アレクサンダー。

于 2013-01-18T21:08:08.360 に答える