【发布时间】:2021-05-29 19:32:50
【问题描述】:
我有一个类似的小部件测试:
testWidgets('Widget test', (WidgetTester tester) async {
provideMockedNetworkImages(() async {
final widget = MyWidget();
await WidgetTestFunctions.pumpWidgetTest(
tester,
widget,
);
// ....
await tester.tap(find.byType(MyWidget));
await tester.pump(new Duration(milliseconds: 3000));
// ....
expect(widget.value, myValue);
});
});
以及widget的on-tap方法的如下实现:
_onButtonPressed() async {
await animationController.forward();
setState(() {
// ...
// Calls method that changes the widget value.
});
}
我遇到的问题是在测试中调用animationController.forward() 方法后,setState 部分没有被执行。我应该如何等待此方法正确完成?在应用运行时,这部分代码被正确调用。
await tester.pump(new Duration(milliseconds: 3000)); 似乎无法正常工作,动画的持续时间为 1500 毫秒,并且您可以看到泵的持续时间是两倍。
【问题讨论】:
-
你找到答案了吗?
-
@SilkeNL 还没有
-
你试过没有持续时间的泵吗?
await tester.tap(find.byType(MyWidget)); await tester.pump(new Duration(milliseconds: 3000)); -
我遇到了类似的问题,在
AnimationController.forward调用后找不到小部件。我通过将ValueKey分配给我要测试的小部件来“修复”这个问题,然后使用该密钥来验证信息。不过,这不是一个解决方案,而更像是一种 hack。 -
你好@notarealgreal 你还没有找到任何解决方案?
标签: animation widget widget-test-flutter