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

时间:2019-10-30 20:53:28

标签: 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

1 个答案:

答案 0 :(得分:1)

在Callback函数的主体中,您可以打印接收到的参数,然后期望它能否正确打印。

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

测试小工具的

...
...

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

...
...

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

可以通过以下方式进行测试:

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