Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Dart中等待单元测试中的异步设置?_Dart_Dart Unittest - Fatal编程技术网

如何在Dart中等待单元测试中的异步设置?

如何在Dart中等待单元测试中的异步设置?,dart,dart-unittest,Dart,Dart Unittest,我的单元测试需要一个需要异步运行的设置。也就是说,在运行测试之前,我需要等待安装程序完成,但安装程序处理的是未来。对于Dart M3,setup函数可以选择返回一个Future。如果安装程序返回未来,unittest框架将等待未来完成,然后再运行各个测试方法 以下是一个例子: 组((“数据库”){ var db=createDb(); 设置((){ 返回openDatabase() 。然后((db)=>populateForTests(db)); }); 测试('读取',(){ Future=d

我的单元测试需要一个需要异步运行的设置。也就是说,在运行测试之前,我需要等待安装程序完成,但安装程序处理的是未来。

对于Dart M3,
setup
函数可以选择返回一个
Future
。如果安装程序返回未来,unittest框架将等待未来完成,然后再运行各个测试方法

以下是一个例子:

组((“数据库”){
var db=createDb();
设置((){
返回openDatabase()
。然后((db)=>populateForTests(db));
});
测试('读取',(){
Future=db.read('foo');
future.then((值){
expect(值,'bar');
});
期待(未来,完成);
});
});

了解更多信息。

虽然赛斯接受的答案是正确的,但下面的示例可能更容易理解和重用。它返回一个
Future
,并在Future的异步工作函数中执行设置:

setUp(() {
  return Future(() async {
    await someFuture();
    callSomeFunction();
    await anotherFuture();
  });
});
最后一次调用
anotherFuture()
返回后,将调用测试用例