Flutter:在模拟中模拟流

时间:2019-08-28 11:02:19

标签: flutter flutter-provider

我有一个包含流的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
  •   

该应用正常运行,但测试失败,有帮助吗?

0 个答案:

没有答案