1

多くの非同期部分を含むライブラリがあり、その特定の部分をテストすると、実際にテストを実行できるようになる前に、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 ライブラリを直接使用する方法はありますか?

4

2 に答える 2

1

私が通常行うことは、 を使用して単一の「完了」関数を作成しexpectAsync、複雑なテストが完了したときにその関数を呼び出すことです。

testFoo() { 
  var done = expectAsync((){});
  someComplexTest(....
     ...
     if (eveerythingOk) done();
     ..
  )
}

つまり、expectAsyncラップされた関数を前もって作成し、テストが正常に完了したと思われるときにそれを呼び出します。それ以外はすべて手動で処理します。

于 2014-04-27T09:40:56.347 に答える
0

expectAsyncメソッドを呼び出す必要がある頻度を示すオプションのパラメーターを追加できます。

于 2014-04-26T20:36:54.190 に答える