TimeoutException в тесте с использованием BehaviorSubject - BLoC - PullRequest
0 голосов
/ 23 февраля 2019

Я создал простой Блок, который использует BehaviorSubject, и я пытаюсь проверить его излучаемые значения, но я продолжаю получать TimeoutException во время теста или ошибки, чтобы при замене добавленных потоков.

Блок

class ApplicationBloc extends BlocBase{

  final _appTitle = BehaviorSubject<String>();
  Function(String)  get changeTitle => (title) => _appTitle.sink.add(title);
  Stream<String> get apptitle => _appTitle.stream;

  ApplicationBloc(){
   // _appTitle.sink.add('title');
  }
  @override
  void dispose() {
    _appTitle.close();
  }
}   

Тест

 test('check title correct', (){

        //works
       /* appBloc.changeTitle('hi');
        expect(appBloc.apptitle, emitsInAnyOrder(['hi']));*/

        //doesn't work
        appBloc.changeTitle('hi');
        appBloc.changeTitle('hello');
        expect(appBloc.apptitle, emitsInOrder(['hi', 'hello']));
  });  

Когда поток заголовков выдает один элемент, он работает нормально.Но когда он испускает несколько элементов, он истекает.Это ошибка, которую я получаю, когда поменяется порядок эмиссии

ОШИБКА: Ожидается: должен выполнить следующее по порядку: * сгенерировать событие 'hi' * сгенерировать событие 'hello' Actual:'> Который: испустил * привет, который не испустил событие "привет", потому что он испустил событие, которое отличается.Ожидаемый: привет Фактический: привет ^ Разница по смещению 1

ПРИМЕЧАНИЕ: Все работает, как я ожидаю, когда я изменяю BehaviorSubject на StreamController

...