forked from eatvio/eatvio_app
101 lines
5.7 KiB
Markdown
101 lines
5.7 KiB
Markdown
# 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` файлы.
|