我正在为屏幕编写小部件测试,其中一项要求是对SliverAppBar
的浮动行为进行测试。但是,我无法进行测试,因为SliverAppBar
不会浮动,尽管在真实设备上运行时相同的代码也可以正常工作。
为了在测试过程中可视化当前屏幕,我将屏幕与黄金文件(不存在)进行比较,并使用flutter test --update-goldens
运行测试,以使测试创建黄金文件,并确保{ {1}}未出现在SliverAppBar
中。 HomePage_golden_scroll3.png
仅在完全向后滚动时显示(即,其行为就像SliverAppBar
是floating
。
由于它可以在真实设备上正常工作,所以我想知道测试有什么问题吗?
false
答案 0 :(得分:0)
您可以通过将“ position.jumpTo()”更改为滚动手势来解决此问题:
await tester.pumpWidget(MaterialApp(home: HomePage()));
await expectLater(find.byType(HomePage),
matchesGoldenFile('HomePage_golden.png'));
expect(find.byType(SliverAppBar), findsOneWidget);
final gesture = await tester.startGesture(Offset(0, 300));
await gesture.moveBy(Offset(0, -300));
await tester.pump();
await expectLater(find.byType(HomePage),
matchesGoldenFile('HomePage_golden_scroll.png'));
expect(find.byType(SliverAppBar), findsNothing);
await gesture.moveBy(Offset(0, 100));
await tester.pump();
await expectLater(find.byType(HomePage),
matchesGoldenFile('HomePage_golden_scroll_back.png'));
expect(find.byType(SliverAppBar), findsOneWidget);