Тест флаттера, что из блока не выводится состояние

У меня есть случай, когда выполняется какое-то условие, тогда блок вообще не выдает состояние (игнорируя все события). Как я могу проверить, что состояние не передается при добавлении нового события в блок?

Я использую flutter_bloc: ^ 3.1.0 и bloc_test: ^ 3.1.0

      'test ignore all event after AlarmEvent()',
      () async {
        bloc.add(AlarmEvent());
        bloc.add(GetRandomPostEvent());

        await emitsExactly(
          bloc,
          [
            SplashScreenLoadingState(),
            ShowAlarmState(),
          ],
        );
      },
    );

Поскольку эта функция еще не реализована, я ожидаю, что тест завершится неудачно, но на самом деле он выполняется успешно. Любая идея ?


person László Soós    schedule 27.03.2020    source источник


Ответы (1)


Вы можете провести тест специально для этого условия, что ничего не должно быть отправлено, и подписаться на свой блок, а затем вызвать fail() в подписке, если блок излучает, так что вы знаете, что они могут быть успешными только в том случае, если fail() не был вызван. Это тоже должен быть синхронный вызов.

Что-то вроде:

var subscription = myBlocStream.listen((_) { 
  fail('Should not emit'); 
}); 
myBloc.doSomething();
subscription.cancel();
person Michel Feinstein    schedule 27.03.2020