testing - 如何在 Flutter 小部件中测试回调函数

标签 testing flutter dart widget

我有一个自定义的 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);
});

来源:https://luksza.org/2020/testing-flutter-callbacks/

关于testing - 如何在 Flutter 小部件中测试回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58633492/

相关文章:

flutter - 如何在 map 中的两个标记之间进行缩放

dart - 使用 http.get Flutter 检索的带有 Utf-8 字符集的无效阿拉伯字符

firebase - Future Builder不显示Cloud Firestore中的数据

java - 如何在 java junit 测试类中并行运行一些测试用例并以串行方式运行一些测试用例?

python - 模拟 python 内置日期时间不能作为装饰器工作

android - 无法在我的 flutter 演示应用程序中的 ListView 中显示 gridview

dart - AngularDart中缺少包

grails - Grails测试套件-指定测试顺序

python - 创建测试数据库时,从现有数据库中复制所有数据。 Django

flutter - 将 nox 模拟器连接到 vs 代码