Я создал простой Блок, который использует 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