閱讀Unit Testing with Dart之後,我仍然無法理解如何將它與Future
s一起使用。異步代碼的單元測試示例
例如:
void main()
{
group('database group',(){
setUp(() {
// Setup
});
tearDown((){
// TearDown
});
test('open connection to local database',(){
DatabaseBase database = null;
expect(database = new MongoDatabase("127.0.0.8", "simplechat-db"), isNotNull);
database.AddMessage(null).then(
(e) {
expectAsync1(e)
{
// All ok
}
},
onError: (err)
{
expectAsync1(bb)
{
fail('error !');
}
}
);
});
// Add more tests here
}); }
所以在測試中,我創建了一個基本抽象類DatabaseBase
的實例,其中包含一些參數給實際的MongoDb類,並立即檢查它是否創建。然後我運行一些非常簡單的功能:AddMessage
。此功能定義爲:
Future AddMessage(String message);
並返回completer.future
。
如果傳遞message
爲null,則作爲函數將失敗完成者:.completeError('Message can not be null');
在實際測試中,我想測試是否成功Future
或完成時發生錯誤。因此,上述這是我試着去了解如何測試Future
回報 - 的問題,這是本次測試不會失敗 :(
你能回答寫一個小代碼示例如何測試返回Future
功能和?測試我的意思是 - 有時我想測試成功時的返回值和失敗測試,如果成功值不正確,並且另一個測試失敗,則功能將失敗Future
並輸入到onError:
區塊
在我的補償了'fail'崩潰,出現異常和堆棧跟蹤等試驗......是否有任何其他的方式來明確地'fail'的考驗嗎? – Jasper 2013-04-11 06:38:47