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

问题描述 投票:1回答:1

我有一个自定义的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个回答
0
投票

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

这里是另一个进行类似测试的样品:

测试小工具的孩子:

...
...

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

...
...

我将print('Call')作为toggleCompletionStatus()的正文传递

可以通过这种方式进行测试:

expectLater(
        () => tester.tap(find.byKey(Key('StatusCheckBox'))), prints('Call\n'));
© www.soinside.com 2019 - 2024. All rights reserved.