【发布时间】:2020-01-06 09:41:18
【问题描述】:
这是mapEventToState 中的MyBloc:
@override
Stream<MyBlocState> mapEventToState(MyBlocEvent event) async* {
if (event is MyBlocInitialize) {
yield MyBlocStateInitialized(event.something);
}
状态的定义如下:
abstract class MyBlocState extends Equatable {
EnterCredentialsState([List props = const []]) : super(props)
}
class MyBlocStateInitialized extends MyBlocState {
final String _something;
MyBlocStateInitialized(this._something);}
事件如下:
abstract class MyBlocEvent {}
class MyBlocEventInizialize extends MyBlocEvent{
final string something;
MyBlocEventInitialize(this.something);
}
现在,这是我的测试:
test('Should return MyBlocInitialized with a defined String', () {
String _somethingString = 'Something';
expectLater(
_myBloc.state,emitsInOrder([
MyBlocsStateUninitialized(),
MyBlocStateInitialized(_somethingString)
]));
_myBloc.dispatch(MyBlocEventInitialize(_somethingString);
}
这个测试的问题是它只会检查 bloc 是否会产生 MyBlocsStateUninitialized 和 MyBlocStateInitialized,但不会检查 MyBlocStateInitialized 中的字符串。其实我也可以换
expectLater(
_myBloc.state,emitsInOrder([
MyBlocsStateUninitialized(),
MyBlocInitialized('WRONG')
]));
_myBloc.dispatch(MyBlocEventInitialize(_somethingString);
}
它仍然会通过。
【问题讨论】: