2

我正在尝试使用持续时间(使用 jQuery UI 和 Jasmine)测试最简单的 addClass 情况。

这是失败的测试:

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

这总是有效的。怎么回事?

4

1 回答 1

1

我花时间为它设置了一个小提琴:http: //jsfiddle.net/ahus1/pZGdP/

我“发明”了让它工作所必需的东西,比如beforeEach. 我不知道您使用的版本,但在此示例中,我使用了可用的最新版本。

我注意到当我真正为样式表添加了一个适当的类时,它才开始起作用。当 CSS 中没有.fdsa类时,没有过渡,测试将失败。

也许小提琴会为你解决它。请看一看。

最好的问候,亚历山大。

于 2013-01-18T21:08:08.360 回答