我创建了一个简单的 Bloc,它使用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”事件实际:'>哪个:发出*你好,它没有发出一个“hi”事件,因为它发出了一个不同的事件。预期:你好 实际:你好 ^ 在偏移量 1 处不同
注意:当我更改为时,一切都按我的预期BehaviorSubject
工作StreamController