我有一个自定义的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
在回调函数的主体中,您可以打印接收到的参数,然后期待它是否可以正确打印。
这里是另一个进行类似测试的样品:
测试小工具的孩子:
...
...
Checkbox(
key: Key('StatusCheckBox'),
value: isCompleted,
onChanged: (_) => toggleCompletionStatus(),
),
...
...
我将print('Call')
作为toggleCompletionStatus()
的正文传递
可以通过这种方式进行测试:
expectLater(
() => tester.tap(find.byKey(Key('StatusCheckBox'))), prints('Call\n'));