import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:kochkomplize/menu.dart'; void main() { testWidgets('Menu renders correctly', (WidgetTester tester) async { void onMenuItemSelectedMock(String item) {} // Verwenden Sie einen GlobalKey, um auf den Scaffold zuzugreifen GlobalKey scaffoldKey = GlobalKey(); await tester.pumpWidget(MaterialApp(home: Scaffold(key: scaffoldKey, drawer: Menu(onMenuItemSelected: onMenuItemSelectedMock)))); // Öffnen Sie den Drawer programmatisch scaffoldKey.currentState!.openDrawer(); await tester.pumpAndSettle(); // Warten, bis die Animation abgeschlossen ist // Überprüfen Sie nun, ob die Elemente im Drawer vorhanden sind expect(find.byType(Drawer), findsOneWidget); expect(find.text('Hauptmenü'), findsOneWidget); expect(find.text('Startseite'), findsOneWidget); expect(find.text('Meine Rezepte'), findsOneWidget); }); testWidgets('Tapping each menu item calls onMenuItemSelected with correct item', (WidgetTester tester) async { String selectedMenuItem = ''; void onMenuItemSelectedMock(String item) { selectedMenuItem = item; } GlobalKey scaffoldKey = GlobalKey(); await tester.pumpWidget(MaterialApp(home: Scaffold(key: scaffoldKey, drawer: Menu(onMenuItemSelected: onMenuItemSelectedMock)))); scaffoldKey.currentState!.openDrawer(); await tester.pumpAndSettle(); // Warten, bis die Animation abgeschlossen ist // Tippen Sie auf das Menüelement 'Startseite' und überprüfen Sie die Funktionalität await tester.tap(find.text('Startseite')); await tester.pumpAndSettle(); expect(selectedMenuItem, 'Startseite'); // Wiederholen Sie den Vorgang für 'Meine Rezepte' scaffoldKey.currentState!.openDrawer(); await tester.pumpAndSettle(); await tester.tap(find.text('Meine Rezepte')); await tester.pumpAndSettle(); expect(selectedMenuItem, 'Meine Rezepte'); // Hier können Sie weitere Tests für andere Menüpunkte hinzufügen }); testWidgets('Drawer closes after an item is selected', (WidgetTester tester) async { void onMenuItemSelectedMock(String item) {} GlobalKey scaffoldKey = GlobalKey(); await tester.pumpWidget(MaterialApp(home: Scaffold(key: scaffoldKey, drawer: Menu(onMenuItemSelected: onMenuItemSelectedMock)))); scaffoldKey.currentState!.openDrawer(); await tester.pumpAndSettle(); await tester.tap(find.text('Startseite')); await tester.pumpAndSettle(); // Überprüfen Sie, ob der Drawer geschlossen ist expect(scaffoldKey.currentState!.isDrawerOpen, isFalse); }); testWidgets('Drawer header renders correctly', (WidgetTester tester) async { // Erstellen Sie eine Mock-Funktion, die einen String als Parameter erwartet void onMenuItemSelectedMock(String item) {} GlobalKey scaffoldKey = GlobalKey(); await tester.pumpWidget(MaterialApp( home: Scaffold(key: scaffoldKey, drawer: Menu(onMenuItemSelected: onMenuItemSelectedMock)) )); scaffoldKey.currentState!.openDrawer(); await tester.pumpAndSettle(); // Überprüfen Sie, ob der DrawerHeader vorhanden ist expect(find.byType(DrawerHeader), findsOneWidget); expect(find.text('Hauptmenü'), findsOneWidget); }); }