2012-12-13 169 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)