出现这个问题的原因是因为在完成 Bloc 的操作后没有正确关闭它。执行了 close() 方法后,不能再向已关闭的 Bloc 中发出新的状态。为了解决这个问题,我们需要在每个测试用例之后,给 Bloc 一个适当的时机关闭。
示例代码:
test('test bloc', () async { final bloc = MyBloc(); bloc.add(SomeEvent());
// 等待所有状态的更新(可以通过具体状态、状态数量等判断) await expectLater( bloc.stream, emitsInOrder([ Loading(), // 由于直接调用了 add() 方法,所以第一个状态是 Loading Success(), // 这里是预期中的状态 ]), );
bloc.close(); // 一定要在测试用例结束后关闭 Bloc });