如何使用具有可丢弃(或可重新启动(事件的颤振整体测试来测试整体事件?
事件示例:
on<SomeEvent>(
_mapSomeEvent,
transformer: droppable(),
);
我试着在颤振群测试中,在可丢弃事件之后立即调用事件,但没有成功。我还尝试使用Isolates,并在Future.delayed
的可丢弃事件中存根一个方法,这样处理起来需要更长的时间,但仍然没有得到我想要的结果。
基本上,我想要一些像这样的测试来工作:
blocTest<SomeBloc, SomeState>(
'Description',
build: () => SomeBloc(),
act: (bloc) async {
bloc.add(DroppableEvent());
bloc.add(SomeEvent());
},
expect: () => [
StateFromDroppable(),
],
);
只有一个状态来自可丢弃事件,因为另一个状态应该被丢弃。相反,我得到了两个发射的卫星,一个来自DroppableEvent
,另一个来自于SomeEvent
。
这是一年前的事了,但我将把我的解决方案放在这里:
假设您正在为BLoC内的用例调用异步调用;导入";我添加的行:
- 使用Completer模拟用例返回
- CCD_ 4
- 在CCD_ 6之后的CCD_
final completer = Completer<void>();
blocTest(
"description",
build: () => bloc,
setUp: () {
when(useCase.call).thenAnswer((_) => completer.future);
},
act: (bloc) async {
bloc.add(DroppableEvent());
await Future<void>.delayed(Duration.zero);
bloc.add(SomeEvent());
await Future<void>.delayed(Duration.zero);
completer.complete();
await Future<void>.delayed(Duration.zero);
},
expect: () => [
StateFromDroppable(),
],
);