2014-10-30 205 views
1

我試圖用dart測試異步代碼。如何用angulardart測試異步代碼

我的邏輯是:

  1. 我的服務刪除節點的延遲之後。
  2. 在我的測試中,我執行服務,他們等待一段時間的延遲測試節點是否被移除。

我做到這一點香草鏢,但角度我得到異常:

Test failed: Caught [Timer created from sync function.] 

然後我用我的測試中異步並得到如下錯誤:

Test failed: Caught [2 active timer(s) are still in the queue.] 

創建這裏的測試回購:https://github.com/giovannicandido/angulardart-async-test

回答

1

該測試在特殊區域內執行(請參閱lib/mock/zone.dart)。

在此區域內,新的Timer()將創建一個模擬定時器,並且您需要 來調用clockTick()來模擬時鐘滴答。

查看test/mock/zone_spec.dart的例子。

你的測試或許應該像

clockTick(milliseconds: 1150); 
expect(ndom).toBeNull(); 
+0

謝謝。我認爲應該存在一個特定於測試的文檔。用角度測試是使開發人員頭很熱的原因:-)。我通常會去源代碼,但它不是微不足道的。 – 2014-10-30 21:47:54