如何在小部件测试中测试特定的 ProviderNotFoundException
Posted
技术标签:
【中文标题】如何在小部件测试中测试特定的 ProviderNotFoundException【英文标题】:How to test for a specific ProviderNotFoundException in widget test 【发布时间】: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 的名称。我将在下面发布解决方案
【参考方案1】:
使用having
方法添加额外的约束并检查feature
参数是否正确匹配matcher
参数。
expect(
tester.takeException(),
isA<ProviderNotFoundException>().having(
(e) => e.valueType,
'valueType',
A,
));
【讨论】:
以上是关于如何在小部件测试中测试特定的 ProviderNotFoundException的主要内容,如果未能解决你的问题,请参考以下文章