我正在学习Flutter,我想为我的简单MyAppBarWidget编写一个测试。下面是我的小部件
class MyAppBarWidget extends StatelessWidget{
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("My first widget"),
),
));
}
}
我想测试小部件树层次结构作为
- MaterialApp具有Scaffold属性
- 脚手架具有AppBar属性
- AppBar的title属性为Text
- 标题是我的第一个小部件
任何建议我应该写什么样的测试
我试过低于测试
void main() {
testWidgets("verify app bar", (WidgetTester tester) async {
await tester.pumpWidget(MyAppBarWidget());
var byWidget = find.byType(MaterialApp);
var text = find.text("My first widget");
expect(byWidget, findsOneWidget);
expect(text, findsOneWidget);
});
}
但这个测试并没有说我的文本字段在AppBar小部件中
有人能帮我如何写测试来验证这一点吗?
感谢
我建议不要测试小部件层次结构,您会经常更改它,并且总是在不知道测试失败或成功的情况下调整测试。最好测试功能、存在或不存在、点击事件和交互。
您还可以查看黄金(屏幕截图(测试,以确保屏幕或页面不会更改。
话虽如此,如果你真的想这样做,你可以使用
find.ancestor(find.byType(AppBar), find.text("My first widget"));
编辑
或者使用更新版本的测试库,感谢Fred Grott:
find.ancestor(of: find.byType(AppBar), matching: find.text("My first widget"));