我尽力使用最简单的测试方法,但当我确保初始化EasyLocalization时,测试永远不会停止。
如果我不确保初始化EasyLocalization,测试将会崩溃,并显示以下错误信息:The following LateError was thrown attaching to the render tree: LateInitializationError: Field '_deviceLocale@1348168148' has not been initialized.
我的代码:
void main() {
testWidgets('Should login', (WidgetTester tester) async {
await initAppWidgetTest(tester);
expect(find.byType(ElevatedButton), findsOneWidget);
});
}
Future<void> initAppWidgetTest(WidgetTester tester) async {
TestWidgetsFlutterBinding.ensureInitialized();
await EasyLocalization.ensureInitialized();
getIt.registerSingleton<AppRouter>(
AppRouter(
checkIfAuthenticated: CheckIfAuthenticated(),
),
);
await tester.pumpWidget(initApp());
await tester.pumpAndSettle();
await tester.pump(const Duration(seconds: 2));
}
Widget initApp() {
return EasyLocalization(
supportedLocales: const [Locale('fr', 'FR'), Locale('en', 'EN')],
path: './assets/languages',
fallbackLocale: const Locale('fr', 'FR'),
assetLoader: const CodegenLoader(),
child: MultiProvider(
providers: [
ChangeNotifierProvider(
create: (_) => CompanyInfosProvider(),
),
ChangeNotifierProvider(
create: (_) => SitesInfosProvider(),
),
],
child: MyApp(),
),
);
}