【问题标题】:How to test a callback function in a Flutter widget如何在 Flutter 小部件中测试回调函数
【发布时间】:2020-02-26 05:33:37
【问题描述】:

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

【问题讨论】:

    标签: testing flutter dart widget


    【解决方案1】:

    在回调函数的主体中,您可以打印接收到的参数,然后期待它是否正确打印。

    这是另一个进行类似测试的示例:

    测试小工具的孩子:

    ...
    ...
    
    Checkbox(
         key: Key('StatusCheckBox'),
         value: isCompleted,
         onChanged: (_) => toggleCompletionStatus(),
     ),
    
    ...
    ...
    
    

    我将 print('Call') 作为 toggleCompletionStatus() 的主体传递

    可以这样测试:

    expectLater(
            () => tester.tap(find.byKey(Key('StatusCheckBox'))), prints('Call\n'));
    

    【讨论】:

      猜你喜欢
      • 2022-06-24
      • 2019-10-31
      • 2019-02-25
      • 2019-06-11
      • 2022-12-12
      • 2019-06-13
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      相关资源
      最近更新 更多