Javascript QUnit测试挂起

Javascript QUnit测试挂起,javascript,testing,qunit,Javascript,Testing,Qunit,我不熟悉qunit和JS测试。测试中的代码执行一个动画(slideDown),该动画必须在我断言之前完成。看起来很简单,但我似乎无法让它工作 asyncTest('my test', function() { setTimeout(function() { // assert something here start(); }, 1000); }); 永远不会调用回调,测试将挂起 我也尝试过其他各种方法。例如: test('my test', function() {

我不熟悉qunit和JS测试。测试中的代码执行一个动画(slideDown),该动画必须在我断言之前完成。看起来很简单,但我似乎无法让它工作

asyncTest('my test', function() {
  setTimeout(function() {
    // assert something here
    start();
  }, 1000);
});
永远不会调用回调,测试将挂起

我也尝试过其他各种方法。例如:

test('my test', function() {
  expect(1);
  stop(1000);
  // assert something here
  start();
});
我可以看到
start
stop
都被调用,
test
调用完成,但仍然挂起

如果有问题,我的设置如下:

setup: function() {
  this.server = sinon.fakeServer.create();
  this.server.respondWith([200, { 'Content-Type': 'text/html' }, new_items()]);
  // invoke the actual system under test
  this.server.respond();
}

听起来好像是Sinon的假计时器启动了(http://sinonjs.org/docs/#clock). 设置超时后,调用
this.clock.tick(1001)

听起来好像Sinon fake计时器开启了(http://sinonjs.org/docs/#clock). 设置超时后调用
this.clock.tick(1001)

如果只使用像
ok(true,“总是很好”)这样的简单断言,第一个示例是否有效?也就是说,
asyncTest()
通常对您有效吗?因为如果是这样的话,一定是你的断言代码破坏了你的测试。我可能不太清楚,传入setTimeout的回调永远不会运行。它永远不会被调用?无论断言中的代码多么简单?那么呢?我非常确定回调中的任何内容都不会影响它是否被调用。怎么可能呢?那是真的,除非有语法错误之类的。我的观点是:你的代码看起来不错,我看不出明显的错误。
setTimeout()
在一般情况下对您有效吗?如果您只使用像
ok(true,“总是很好”)这样的简单断言,第一个示例有效吗?也就是说,
asyncTest()
通常对您有效吗?因为如果是这样的话,一定是你的断言代码破坏了你的测试。我可能不太清楚,传入setTimeout的回调永远不会运行。它永远不会被调用?无论断言中的代码多么简单?那么呢?我非常确定回调中的任何内容都不会影响它是否被调用。怎么可能呢?那是真的,除非有语法错误之类的。我的观点是:你的代码看起来不错,我看不出明显的错误。
setTimeout()
对您一般有效吗?