Files

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):

  • Полный экран создания рецепта - тестирует весь экран целиком
  • Валидация - проверяет валидацию всех полей
  • Навигация - тестирует навигацию между экранами
  • Редактирование рецепта - тестирует режим редактирования

Запуск тестов

Запуск всех тестов создания рецепта:

flutter test test/features/create_recipe/

Запуск конкретного файла тестов:

# Базовые тесты (рекомендуется)
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 - для генерации мок-файлов

Генерация мок-файлов

После изменения тестов запустите:

dart run build_runner build --delete-conflicting-outputs

Это сгенерирует необходимые .mocks.dart файлы.