如何在小部件测试中使用 mockingjay 验证是否出现了警告对话框?
How do I verify an alert dialog has appeared using mockingjay in a widget test?
使用 mockingjay Flutter 包,我如何在小部件测试中验证是否在例如点击一个按钮?使用 showDialog 函数显示警告对话框。
这与验证页面导航行为非常相似,引起我注意的是 showDialog 函数必须将参数 useRootNavigator
设置为 false,如 example project 中所述。没有它,测试将无法检测到显示了警报对话框。
showDialog(
context: context,
useRootNavigator: false, // By default this is true, which won't work with Mockingjay
routeSettings: RouteSettings(name: 'verify_checkout_failure'),
builder: (context) {
return AlertDialog(title: Text('Checkout failed'));
});
那么在你的测试中:
await tester.tap(find.byType(PlaceOrderButton));
verify(
() => mockNavigator.push(
any(
that: isRoute<void>(
whereName: equals('verify_checkout_failure'),
),
),
),
);
使用 mockingjay Flutter 包,我如何在小部件测试中验证是否在例如点击一个按钮?使用 showDialog 函数显示警告对话框。
这与验证页面导航行为非常相似,引起我注意的是 showDialog 函数必须将参数 useRootNavigator
设置为 false,如 example project 中所述。没有它,测试将无法检测到显示了警报对话框。
showDialog(
context: context,
useRootNavigator: false, // By default this is true, which won't work with Mockingjay
routeSettings: RouteSettings(name: 'verify_checkout_failure'),
builder: (context) {
return AlertDialog(title: Text('Checkout failed'));
});
那么在你的测试中:
await tester.tap(find.byType(PlaceOrderButton));
verify(
() => mockNavigator.push(
any(
that: isRoute<void>(
whereName: equals('verify_checkout_failure'),
),
),
),
);