我有一个包含流的bloc对象:
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);
然后,我构建一个测试小部件,以通过provider软件包提供该区块:
testWidget = MultiProvider(
providers: [
Provider<Bloc>.value(value: bloc)
],
child: Something(),
);
但是当我执行测试时,此提供程序构造失败并显示以下错误:
构建了Provider(dirty, 州: _DelegateWidgetState#9ee17):尝试使用具有可侦听/流(Bloc)子类型的Provider。
这可能是一个错误,因为提供程序不会自动更新 依赖于Bloc更新的时间。相反,请考虑更改提供者 对于处理更新机制的更具体的实现, 例如:
- ListenableProvider
- ChangeNotifierProvider
- ValueListenableProvider
- StreamProvider
该应用正常运行,但测试失败,有帮助吗?