2012-12-13 75 views
1

我是qunit和JS测试的新手。被测试的代码做一个动画(slideDown),在我断言之前必须完成。看起来很简单,但我似乎无法得到它的工作。QUnit测试挂起

asyncTest('my test', function() { 
    setTimeout(function() { 
    // assert something here 
    start(); 
    }, 1000); 
}); 

回调从未被调用,并且测试挂起。

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

test('my test', function() { 
    expect(1); 
    stop(1000); 
    // assert something here 
    start(); 
}); 

我可以看到,无论startstop被称为和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(); 
} 
+0

如果你只使用一个简单的断言如'ok(true,“always fine”);'?即'asyncTest()'一般适合你吗?因为如果是这样,它必须有你的断言代码来打破你的测试。 – Odi

+0

我可能不太清楚,传入setTimeout的回调永远不会运行。 –

+1

它从未被称为?无论断言中的代码有多简单?那么[我的jsFiddle示例](http://jsfiddle.net/odi86/9QDUX/)? – Odi

回答

1

这听起来像兴农假计时器上(http://sinonjs.org/docs/#clock)。设置超时后调用this.clock.tick(1001)