我正在编写一个Flutter Web应用程序,并在代码库中添加一些小部件测试。我有困难使flutter_test按预期工作。我目前面临的问题是尝试在DropdownButton中选择值。
以下是完整的小部件测试代码,可重现该问题:
void main() {
group('description', () {
testWidgets('description', (WidgetTester tester) async {
await tester.pumpWidget(MaterialApp(
home: Card(
child: Column(
children: [
Expanded(
child: DropdownButton(
key: Key('LEVEL'),
items: [
DropdownMenuItem<String>(
key: Key('Greater'),
value: 'Greater',
child: Text('Greater'),
),
DropdownMenuItem<String>(
key: Key('Lesser'),
value: 'Lesser',
child: Text('Lesser'),
),
],
onChanged: (value) {
print('$value');
},
value: 'Lesser',
),
)
],
),
),
));
expect((tester.widget(find.byKey(Key('LEVEL'))) as DropdownButton).value,
equals('Lesser'));
await tester.tap(find.byKey(Key('LEVEL')));
await tester.tap(find.byKey(Key('Greater')));
await tester.pumpAndSettle();
expect((tester.widget(find.byKey(Key('LEVEL'))) as DropdownButton).value,
equals('Greater'));
});
});
}
这个测试在最后一个期望值处失败 -- expect(widget.value, equals('Greater'));
根据我的调试器或输出中的打印语句,onChanged回调从未被调用。
如何测试DropdownButton的行为呢?