Flutter测试中如何校验查找到的Step组件的isActive属性是否为true
Flutter Step组件isActive属性校验方案
你之前的写法错误核心有两点:
- 定位目标错误,没有匹配到需要校验的
Step组件本身 - 不能直接在Finder或Element实例上读取Widget的自定义属性,需要先通过测试工具拿到
Step组件实例再做断言
正确实现代码如下:
// 第一步:通过Step的title文本定位到对应的Step组件 final targetStepFinder = find.ancestor( of: find.text('Initialize a New Flutter Release'), matching: find.byType(Step), ); // 第二步:获取Step组件实例,读取isActive属性做断言 final Step targetStep = tester.widget<Step>(targetStepFinder); expect(targetStep.isActive, isTrue);
如果你的页面存在多个相同title的Step,可以调整定位逻辑,比如通过Step在父组件中的索引位置定位,示例如下:
// 取第1个Step组件(索引从0开始) final targetStepFinder = find.byType(Step).at(0); final Step targetStep = tester.widget<Step>(targetStepFinder); expect(targetStep.isActive, isTrue);
内容的提问来源于stack exchange,提问作者Chen
相关产品推荐
相关产品推荐

