Dart 测试:期望流不发出任何内容

Dart tests: excpect stream to emit nothing

我想检查一些 Stream(例如 bloc)在单元测试期间什么都不发出。

更详细的说明:我用的是mockito and flutter_bloc包。被测系统是一个整体。我的测试:

  test('sut emits nothing', () {
    final event = SomeEvent(false);
    sut.add(event);
    expectLater(
      sut,
      emitsNothing,    // <---- HERE I want to check that sut emits nothing
    );
  });

这是我的区块的映射函数:

  @override
  Stream<State> mapEventToState(Event event) async* {
    if (event is SomeEvent) {
      // If `flag` is true - then bloc emits a state,
      // if `flag` is false - then bloc emits nothing.
      if (event.flag) {    
        yield State.someState;
      }
    }
  }

这是SomeEvent的代码:

abstract class Event extends Equatable {}

class SomeEvent extends Event {
  final bool flag;

  SomeEvent(this.flag);

  @override
  List<Object> get props => [flag];
}

我可以看看吗?任何帮助表示赞赏。

您可以使用 bloc_test 包来实现。

blocTest(
  'CounterBloc emits no events',
  build: () => CounterBloc(),
  act: (_) {}, // no action taken
  expect: [], // no event emitted
);