我有一个包含流的块对象:
Bloc {
final _controller = StreamController<MainEvents>.broadcast();
Stream<MainEvents> get stream => _controller.stream;
}
我正在尝试模拟这个对象,以便使用Mockito进行另一个测试:
Bloc bloc = Bloc();
final _controller = StreamController<MainEvents>.broadcast();
when(mainBloc.stream).thenAnswer((_) => _controller.stream);
然后我构建了一个通过提供程序包提供这个块的测试小部件:
testWidget = MultiProvider(
providers: [
Provider<Bloc>.value(value: bloc)
],
child: Something(),
);
但是当我执行测试时,此提供程序构造失败并出现错误:
在构建 Provider(dirty, state: _DelegateWidgetState#9ee17) 时抛出了以下断言:尝试使用具有 Listenable/Stream (Bloc) 子类型的 Provider。
这可能是一个错误,因为 Provider 不会在 Bloc 更新时自动更新依赖项。相反,请考虑将 Provider 更改为处理更新机制的更具体的实现,例如:
- ListenableProvider
- ChangeNotifierProvider
- ValueListenableProvider
- 流提供者
该应用程序运行正常,但测试失败,有什么帮助吗?