我正在 Flutter 上研究 Cubit Bloc 架构。
我有一个静态列表,其中包含多个立方位的条目,我需要在整个应用程序中使用它们。
static List<BlocProvider> providers = [
BlocProvider<NameCubit1>(create: (_) => NameCubit1()),
BlocProvider<NameCubit2>(create: (_) => NameCubit2()),
];
现在,我需要实现一个单元测试,可以测试该静态列表是否包含特定的 Cubit。我已经实现了以下代码:
我在 MultiBlocProvider -> MaterialApp 中的提供者字段中传递此列表。
但是,每次我运行测试时,它都会失败并告诉输出为假,但它应该是真的。 知道如何实现一个测试来检查立方位是否已添加到列表中。
我尝试过以下代码进行测试:
group('testing bloc provider', () {
test('check if list contains instance of LocaleCubit', () {
expect(
BlocProviders.providers.contains(BlocProvider<LocaleCubit>(create: (_) => LocaleCubit())),
true,
);
});
});
group('testing bloc provider', () {
test('check if list contains instance of LocaleCubit', () {
expect(
BlocProviders.providers.contains(BlocProvider<LocaleCubit>),
true,
);
});
});
提前致谢。
调用
BlocProvider()
将创建一个新实例,该实例不能与初始提供者列表等同。
您可以检查提供商类型。如果提供程序列表包含作为
BlocProvider<LocaleCubit>
实例的任何提供程序,以下代码将返回 true。
group('testing bloc provider', () {
test('check if list contains instance of LocaleCubit', () {
expect(
BlocProviders.providers.any((element) => element is BlocProvider<LocaleCubit>),
true,
);
});
});