【问题标题】:How to test for a specific ProviderNotFoundException in widget test如何在小部件测试中测试特定的 ProviderNotFoundException
【发布时间】:2021-09-17 05:43:57
【问题描述】:

我在某个小部件上方创建了一些提供者(例如提供者 A、B、C),并在从小部件树中删除提供者的情况下测试 ProviderNotFoundException

现在我正在像这样测试ProviderNotFoundException

expect(tester.takeException(), isA<ProviderNotFoundException>());

这是非常通用的,因为如果它们被删除,这将适用于所有提供者 A、B 和 C。我想添加额外的约束来检查是否只有提供者 B 没有找到。

我尝试在isA 上使用having 方法,但无法正常工作。

expect(
              tester.takeException(),
              isA<ProviderNotFoundException>().having(
                (e) => e.valueType,
                'valueType',
                contains('A'),
              ));

【问题讨论】:

  • having 应该是要走的路 - 你介意发布你尝试过的代码吗?
  • @MichaelHorn 我意识到我的错误。 matcher 参数应该具有 Provider 的类型,并且不检查它是否包含 Provider 的名称。我将在下面发布解决方案

标签: flutter dart flutter-test widget-test-flutter


【解决方案1】:

使用having 方法添加额外的约束并检查feature 参数是否正确匹配matcher 参数。

 expect(
              tester.takeException(),
              isA<ProviderNotFoundException>().having(
                (e) => e.valueType,
                'valueType',
                A,
              ));

【讨论】:

    猜你喜欢
    • 2019-10-31
    • 1970-01-01
    • 2022-12-13
    • 2019-06-13
    • 2021-09-22
    • 2022-06-24
    • 2016-01-27
    • 2021-01-31
    • 2022-12-12
    相关资源
    最近更新 更多