Практическое руководство по написанию модульных тестов для Appwrite SDK на Flutter с помощью Mockito

Appwrite — это серверная часть с открытым исходным кодом (OSS) как услуга, целью которой является абстрагирование сложности общих, сложных и повторяющихся задач, необходимых для создания современного приложения. Appwrite можно использовать как альтернативу Firebase с набором функций, таких как аутентификация, база данных, хранилище, функции и поддержка в реальном времени. Кроме того, он предоставляет SDK практически для всех платформ, таких как Интернет, Android, iOS, Flutter и т. д.

Хотя мы используем SDK для разработки приложения. Модульное тестирование по-прежнему важно, чтобы проверить, хорошо ли наше приложение подключено к этому SDK. Итак, в этой статье я хочу показать вам, как создать модульный тест в вашем проекте Flutter при использовании Appwrite в качестве SDK для вашего бэкэнда.

Если вы новичок в модульном тестировании терминов, вы можете прочитать мою предыдущую статью о тестировании Flutter здесь.

Шаг 1 — Получите плагин Mockito

Потому что в модульном тесте мы не выполняем настоящую функцию. Итак, чтобы иметь возможность модульного тестирования такой службы, как Appwrite, нам нужно создать макет для этой службы. Для этого нам нужен плагин под названием Mockito.



Давайте добавим mockito в наш файл dev_dependencies на pubspec.yaml.

...
dev_dependencies:
    flutter_test:
        sdk: flutter
    build_runner: ^2.1.7
    mockito: ^5.1.0
...

Помимо mockito, нам также нужно build_runner, потому что mockito сгенерирует фиктивный файл.



Шаг 2 — Создайте макет приложения

После получения необходимых нам плагинов следующим шагом будет создание макета нашего сервиса. Например, я хочу создать репозиторий для проверки подлинности. Итак, я создам макет для Account из Appwrite SDK.

Чтобы сгенерировать новый фиктивный файл, мы используем аннотацию @GenerateMocks() в нашем тестовом файле. После этого нам нужно запустить build_runner, чтобы начать создание фиктивного файла. Эта команда создаст новый файл, например auth_repository_test.mocks.dart

flutter packages pub run build_runner build

Шаг 3 — Напишите тест

Теперь мы готовы написать наш тест. В качестве примера я напишу тест для функции входа в систему. Вот как выглядит мой тестовый файл для auth_repository_test.dart:

MockAccount взят из фиктивного файла, который мы создали ранее. В AuthRepositoryImpl я передаю _mockAccount в качестве зависимости.

Шаг 4 — Напишите фактический код

Последний шаг — написать фактический код репозитория. Вот как выглядит мой файл auth_repository.dart:

Кстати, Appwrite также предоставляет класс AppwriteException. Это полезно, если вы хотите создать более богатую обработку ошибок для своего приложения. Например, предупреждение о неправильном пароле, предупреждение об уже используемой электронной почте и т. д.

Итак, это пошаговое модульное тестирование для вашего проекта Flutter, когда вы используете Appwrite в качестве SDK, чтобы облегчить себе жизнь при создании приложения в одиночку. Я использую метод разработки через тестирование при написании этого модульного теста. Если вам интересно узнать о TDD, вы можете прочитать больше здесь:



Если у вас есть какие-либо вопросы, не стесняйтесь начать обсуждение.

Спасибо за прочтение.