【问题标题】:Dart tests: excpect stream to emit nothingDart 测试:期望流不发射任何内容
【发布时间】:2021-05-22 12:29:33
【问题描述】:

我想检查一些 Stream(例如 bloc)在单元测试期间没有发出任何内容。

更详细的说明:我使用mockitoflutter_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];
}

我可以检查一下吗?任何帮助表示赞赏。

【问题讨论】:

    标签: flutter unit-testing dart bloc


    【解决方案1】:

    您可以通过使用bloc_test 包来实现此目的。

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

    【讨论】:

    • 我按照您的建议尝试了 bloc_test packege。它非常有用,它允许检查 bloc 是否没有发出任何信号!不使用 verify 选项,而只需将 [] 传递给 expect 参数。太感谢了!我已经投票赞成你的回答。如果您希望我接受它,请添加一些有关将 [] 传递给expect 的信息以及一些相关代码。
    • @Mol0ko 这很有趣,我会在业余时间尝试一下,同时我已经根据您的喜好更新了代码。让我知道是否应该添加任何具体内容:)
    猜你喜欢
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多