如何在 bloc 单元测试中模拟连接?

How to mock connectivity in bloc unit-tests?

我正在使用这个 package 并且我在一个 bloc 中有以下连接

Connectivity _connectivity = Connectivity();
StreamSubscription _connectivityStreamSubscription;

ConnectivityBloc() {
    _connectivityStreamSubscription = _connectivity.onConnectivityChanged.listen((connectivityResult) {
      if (connectivityResult == ConnectivityResult.wifi) {
        add(ConnectivityEventConnectEvent());
      } else {
        add(ConnectivityEventDisconnectEvent());
      }
    });
  }

我正在尝试测试 bloc,但是我正在努力在单元测试中模拟 StreamSubscription。那么我们如何在 bloc_test 中模拟 StreamSubscription?

我想通了,我没有将 Connectivity 的实例传递给 bloc。

ConnectivityBloc(this._connectivity) {

我用 Mockito 模拟了 Connectivity。

class MockConnectivity extends Mock implements Connectivity {}

然后我可以传递带有我想要的 ConnectivityResult 的 Stream

when(mockConnectivity.onConnectivityChanged).thenAnswer(
      (_) => Stream<ConnectivityResult>.fromIterable([ConnectivityResult.mobile, ConnectivityResult.wifi]));