想要测试 BlocProviders 的静态列表是否包含特定的 Cubit 条目

问题描述 投票:0回答:1

我正在 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,
    );
  });
});

提前致谢。

flutter unit-testing bloc cubit
1个回答
0
投票

调用

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,
    );
  });
});
© www.soinside.com 2019 - 2024. All rights reserved.