Files
eatvio_app/test/features/create_recipe/README.md
2025-10-20 12:04:53 +03:00

101 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Widget Tests для создания рецепта
Этот каталог содержит widget тесты для функциональности создания рецепта в приложении Eatvio.
## Файлы тестов
### 1. `basic_widget_test.dart`
Основные widget тесты, которые проверяют базовую функциональность создания рецепта:
- **Создание CreateRecipeCubit** - проверяет корректное создание cubit'а
- **Отображение полей формы** - проверяет наличие всех необходимых полей
- **Обновление полей** - проверяет корректное обновление полей при вводе данных
- **Отображение лейблов** - проверяет корректное отображение подписей полей
- **Placeholder текст** - проверяет отображение подсказок в полях
- **Кнопка публикации** - проверяет наличие и функциональность кнопки
- **Обработка нажатий** - проверяет корректную обработку нажатий на кнопки
- **Состояния загрузки** - проверяет отображение индикатора загрузки
- **Сообщения об ошибках** - проверяет отображение ошибок
- **Сообщения об успехе** - проверяет отображение сообщений об успешном выполнении
- **Валидация полей** - проверяет отображение ошибок валидации
- **Полная форма** - проверяет отображение всех полей формы
### 2. `simple_widget_test.dart`
Более сложные тесты, которые работают с реальными виджетами приложения:
- **InfoAboutRecipeWidget** - тестирует виджет основной информации о рецепте
- **IngredientsWidget** - тестирует виджет ингредиентов
- **StepsWidget** - тестирует виджет шагов приготовления
- **Интерактивность** - тестирует взаимодействие с полями формы
- **Добавление элементов** - тестирует добавление ингредиентов, шагов и тегов
### 3. `widget_test.dart`
Полные интеграционные тесты (требуют настройки GetIt):
- **Полный экран создания рецепта** - тестирует весь экран целиком
- **Валидация** - проверяет валидацию всех полей
- **Навигация** - тестирует навигацию между экранами
- **Редактирование рецепта** - тестирует режим редактирования
## Запуск тестов
### Запуск всех тестов создания рецепта:
```bash
flutter test test/features/create_recipe/
```
### Запуск конкретного файла тестов:
```bash
# Базовые тесты (рекомендуется)
flutter test test/features/create_recipe/basic_widget_test.dart
# Простые тесты с реальными виджетами
flutter test test/features/create_recipe/simple_widget_test.dart
# Полные интеграционные тесты (требуют настройки)
flutter test test/features/create_recipe/widget_test.dart
```
## Структура тестов
Все тесты используют:
- **Mockito** для создания мок-объектов
- **Flutter Test** для widget тестирования
- **BlocProvider** для управления состоянием
- **AppKeys** для поиска элементов по ключам
## Рекомендации
1. **Начните с `basic_widget_test.dart`** - эти тесты наиболее стабильны и покрывают основную функциональность
2. **Используйте `simple_widget_test.dart`** для тестирования реальных виджетов приложения
3. **`widget_test.dart`** требует дополнительной настройки GetIt и может быть нестабильным
## Покрытие тестами
Тесты покрывают:
- ✅ Создание и инициализация cubit'а
- ✅ Отображение всех полей формы
- ✅ Ввод данных в поля
- ✅ Валидация полей
- ✅ Обработка состояний (загрузка, ошибка, успех)
- ✅ Интерактивность (нажатия, ввод текста)
- ✅ Отображение лейблов и подсказок
- ✅ Добавление ингредиентов, шагов и тегов
## Зависимости
Тесты используют следующие пакеты:
- `flutter_test` - основной пакет для тестирования
- `mockito` - для создания мок-объектов
- `flutter_bloc` - для тестирования BLoC/Cubit
- `build_runner` - для генерации мок-файлов
## Генерация мок-файлов
После изменения тестов запустите:
```bash
dart run build_runner build --delete-conflicting-outputs
```
Это сгенерирует необходимые `.mocks.dart` файлы.