2014-11-21 121 views
-1

我有一些單元測試,它們都是異步執行的。但事實證明,儘管我在單元測試中調用expectAsync很多次(有時這可能涉及對expectAsync的多個嵌套異步調用),但單元測試仍然退出並調用tearDown方法,該方法有效地切斷了我的基礎設施,我的異步測試運行。我想要發生的事情是讓我的測試運行,並等到所有期望異步完成,然後繼續進行下一個測試。這有可能實現嗎?我的單元測試一直傳遞到現在的原因是因爲tearDown中的清理代碼也正在執行異步,但它理想上應該工作在異步或立即清理的天氣。如何防止使用dart中的expectAsync進行單元測試?

回答

2

我們需要看到您的代碼能夠查明確切的問題。

最有可能你沒有撥打expectAsync就夠了。在任何時候您的代碼正在等待異步回調,至少必須有一個未完成的expectAsync函數等待調用。

你可以通過創建你打電話時,您的測試完成,「完成」功能,切斷一切歸因於一個expectAsync電話:

test("ladadidadida",() { 
    var done = expectAsync((){}); 
    something.then((a) { return somethingElse(); }) 
      .then((b) { expect(a, b); done(); }) 
}); 
+0

它調用expectAsync每次進入另一個異步「迴路」用這個時間[helper method](https://github.com/0xor1/purity/blob/dev/test/unit/utility.dart#L16) – 0xor1 2014-11-22 20:02:24