7.8 KiB
Интеграционные тесты создания рецепта
Этот набор интеграционных тестов покрывает полный пользовательский путь создания нового рецепта в приложении Eatvio.
Структура файлов
create_recipe_test.dart- Основные интеграционные тестыcreate_recipe_helpers.dart- Helper функции для тестированияREADME.md- Документация
Тестовые сценарии
1. Полное создание рецепта
Файл: create_recipe_test.dart - should create and publish a new recipe successfully
Описание: Тестирует полный пользовательский путь создания рецепта с заполнением всех полей.
Шаги:
- Запуск приложения и вход в систему
- Навигация к экрану создания рецепта
- Заполнение основной информации (название, тип, порции, калории, время)
- Добавление тегов
- Добавление ингредиентов
- Добавление шагов приготовления
- Симуляция добавления изображения
- Публикация рецепта
- Проверка успешного перехода
2. Валидация полей
Файл: create_recipe_test.dart - should validate required fields before publishing
Описание: Проверяет, что валидация обязательных полей работает корректно.
Шаги:
- Запуск приложения и вход в систему
- Навигация к экрану создания рецепта
- Попытка публикации без заполнения полей
- Проверка, что остались на экране создания (валидация не прошла)
3. Минимальное создание рецепта
Файл: create_recipe_test.dart - should create recipe with minimal required fields
Описание: Тестирует создание рецепта с минимально необходимыми полями.
Шаги:
- Запуск приложения и вход в систему
- Навигация к экрану создания рецепта
- Заполнение только обязательных полей
- Добавление минимума ингредиентов
- Симуляция добавления изображения
- Публикация рецепта
- Проверка успешного перехода
Helper функции
Навигация
navigateToCreateRecipeScreen()- Переход к экрану создания рецепта
Заполнение формы
fillRecipeBasicInfo()- Заполнение основной информации о рецептеselectRecipeType()- Выбор типа рецептаaddTags()- Добавление теговaddIngredients()- Добавление ингредиентовaddCookingSteps()- Добавление шагов приготовления
Публикация и проверки
publishRecipe()- Публикация рецептаverifyRecipePublished()- Проверка успешной публикацииverifyValidationErrors()- Проверка ошибок валидации
Симуляция изображений
mockImageSelection()- Симуляция выбора изображения для рецептаmockStepImageSelection()- Симуляция выбора изображения для шага
Тестовые данные
createTestRecipeData()- Создание набора тестовых данных
Ключи для тестирования
В файле lib/app_keys.dart добавлены следующие ключи для стабильного тестирования:
Основные поля
recipeCreateScreenTitleField- Поле названияrecipeCreateScreenDescriptionField- Поле описанияrecipeCreateScreenTypeDropdown- Выпадающий список типа рецептаrecipeCreateScreenPortionsField- Поле количества порцийrecipeCreateScreenCaloriesField- Поле калорийности
Время приготовления
recipeCreateScreenTotalHoursField- Часы общего времениrecipeCreateScreenTotalMinutesField- Минуты общего времениrecipeCreateScreenActiveHoursField- Часы активного времениrecipeCreateScreenActiveMinutesField- Минуты активного времени
Теги и ингредиенты
recipeCreateScreenTagField- Поле для ввода тегаrecipeCreateScreenAddTagButton- Кнопка добавления тегаrecipeCreateScreenAddIngredientButton- Кнопка добавления ингредиента
Шаги приготовления
recipeCreateScreenAddStepButton- Кнопка добавления шагаrecipeCreateScreenStepDescriptionField- Поле описания шагаrecipeCreateScreenStepImageWidget- Виджет изображения шага
Изображения и публикация
recipeCreateScreenImageWidget- Виджет основного изображенияrecipeCreateScreenPublishButton- Кнопка публикации
Запуск тестов
# Запуск всех интеграционных тестов
flutter test integration_test/
# Запуск только тестов создания рецепта
flutter test integration_test/create_recipe/
# Запуск конкретного теста
flutter test integration_test/create_recipe/create_recipe_test.dart
Требования
- Flutter SDK
- Настроенная тестовая среда (AppBuildType.tests)
- Тестовые учетные данные в .env файле
- Доступ к API бэкенда для тестирования
Примечания
-
Изображения: В текущей реализации используется симуляция выбора изображений. Для полноценного тестирования рекомендуется добавить моки для
image_picker. -
API взаимодействие: Тесты взаимодействуют с реальным API бэкенда. Убедитесь, что тестовая среда настроена корректно.
-
Время выполнения: Тесты могут занимать значительное время из-за анимаций и API запросов. Используйте
pumpAndSettle()с достаточными таймаутами. -
Стабильность: Ключи для тестирования добавлены в UI компоненты для обеспечения стабильности тестов при изменениях в интерфейсе.
Расширение тестов
Для добавления новых тестовых сценариев:
- Создайте новый
testWidgetsвcreate_recipe_test.dart - Используйте существующие helper функции или создайте новые в
create_recipe_helpers.dart - При необходимости добавьте новые ключи в
app_keys.dart - Обновите документацию в этом файле