我有一个自定义的 Flutter 小部件 RadioSelect,它接受一组选项和一个在按下其中一个选项时的回调函数。调用回调时将选定的选项作为唯一参数传递。我正在尝试编写一个测试来验证是否调用了回调并检查返回的参数是否正确,但我不确定如何构造它。检查是否调用了独立回调函数的明智方法是什么?
await tester.pumpWidget(
StatefulBuilder(
builder: (BuildContext context, StateSetter setState) {
return MaterialApp(
home: RadioSelect(
["option1","option2", "option3"],
// callback function passed here
),
);
},
),
);
expect(find.text('option1'), findsOneWidget);
await tester.press(find.text('option2'));
await tester.pump();
// test for callback here
最佳答案
您还可以使用Completer
testWidgets('callback', (WidgetTester tester) async {
final completer = Completer<void>();
await tester.pumpWidget(
MaterialApp(
home: FlatButton(
child: Text('press me'),
onPressed: completer.complete,
),
),
);
await tester.tap(find.byType(FlatButton));
expect(completer.isCompleted, isTrue);
});
关于testing - 如何在 Flutter 小部件中测试回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58633492/