我正在使用 flutter_bloc 库并尝试进行单元测试。我正在按照本教程中的说明进行此操作,并且效果很好。
但是,如果扩展 Equatable(需要)的 BlocState 具有许多扩展 Equatable 的属性或大型项目列表,以及它们的 props[] 定义为需要。
这使得expectLater()
匹配正确的发射状态变得困难,因为它试图将确切的实例与其内容匹配,而不仅仅是状态类型或实例。
例如:
考虑以下状态类:
class BlocState extends Equatable{
final List<String> data;
BlocState({this.data});
@override
List<Object> get props => [data];
}
然后对于像这样的发射状态:
List<String> data = ['Mark', 'Mike', 'John']
BlocState({data: data});
这个 expectLater 会失败
expectLater(
bloc,
emitsInOrder([BlocState(),]), //This will fail as the state does't equals exactly to the real state
)
而这个将通过:
expectLater(
bloc,
emitsInOrder([BlocState(data: ['Mark', 'Mike', 'John']),]), //This will pass
)
在如此简单的状态下,可以验证确切的内容,但如果列表将包含 100 个项目,如何对其进行测试?
有没有办法只验证没有内容的实例类型?