我有一个库,其中包含许多异步部分,测试它的特定部分有时可能意味着在测试可以实际运行之前等待 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 库来实现这一点或类似的东西?