多くの非同期部分を含むライブラリがあり、その特定の部分をテストすると、実際にテストを実行できるようになる前に、n 個の非同期プロセスが完了するのを待つ必要がある場合があります。私はこの方法を使用して目的を達成しています。
void expectAsyncWithReadyCheckAndTimeout(bool readyCheck(), int timeout, void expect()){
DateTime start = new DateTime.now();
Duration limit = new Duration(seconds: timeout);
var inner;
inner = (){
if(readyCheck()){
expect();
}else if(new DateTime.now().subtract(limit).isAfter(start)){
throw 'async test timed out';
}else{
Timer.run(expectAsync(inner));
}
};
inner();
}
これは基本的に、テストの実行準備が整うまで、または指定されたタイムアウトが期限切れになるまで実行され続けます。これを達成する方法や、dart unittest ライブラリを直接使用する方法はありますか?