Stream に流れる値の検証

Stream に流れる値を検証したいとき

とりあえず以下のような class があったとして、body の値を確認したいとします。

class ProfileViewModel {
  final StreamController<String> _body = StreamController.broadcast();

  Stream<String> get body => _body.stream;

  void onBodyEdited(String body) {
    _body.add(body);
  }
}

RxDart の Subject を使うような場合でも基本的には同じ方法を取ることが出来ます。

いくつか方法があります。

Recipe

expectLater

test('test', () {
  final viewModel = ProfileViewModel();

  expectLater(viewModel.body, emits('body'));

  viewModel.onBodyEdited('body');
});

複数の値が add される場合には emitsInOrder, emitsInAnyOrder が使用できます。

expectAsync

複数回 add される場合は count を指定することが出来ます。

もちろん Completer などを使用して expectLater などを使わずに自分で書くことも出来ます。

Result

最終更新

役に立ちましたか?