我有一个异步测试,该测试通过在setUp
方法中向流中添加一些项来进行设置。设置本身是同步的,不需要任何特殊处理。不幸的是,测试在我的setUp
完成之前就触发了!如前所述,由于await
中没有async
代码,我无法使用setUp
时如何实现这种“等待机制”?我尝试添加async
,但没有什么可等待的...
一个例子:
我有一个_bloc
对象,每次将点击事件添加到其点击接收器时,该对象都会递增并发出一个分数(int
)。
group("after 10 clicks", () {
setUp(() {
List.generate(10, (i) => i).forEach((_) {
_bloc.clicks.add(null);
});
});
test("score is 10", () async {
var _score = await _bloc.score.first;
expect(_score, equals(10));
});
});
答案 0 :(得分:1)
使setUp
异步并返回Future
完成后完成的setUp
。
测试框架在运行测试之前等待Future
完成。
答案 1 :(得分:0)
在-f email, name // this is wrong
完成之前,测试不会运行。但是它确实在所有期望的事件发生之前运行,这是由于setUp
对象的异步性质。 BLoC
已全部执行,但clicks
流尚未发出所有相应的事件,因为它仍在处理输入的点击事件。
无论如何,对于这个问题,score
函数中的async
回调在测试运行之前就已完成。