Как оценивать расширения с помощью эмулятора расширений

Прежде чем использовать эмулятор Extensions в своем приложении, убедитесь, что вы понимаете общий рабочий процесс Firebase Local Emulator Suite, установили и настроили Local Emulator Suite и изучили команды CLI.

В этом руководстве также предполагается, что вы знакомы с Firebase Extensions и знаете, как использовать их в приложениях Firebase.

Что можно делать с помощью эмулятора Extensions?

С помощью эмулятора Extensions вы можете устанавливать расширения и управлять ими в безопасной локальной среде, а также лучше понимать их возможности, минимизируя при этом сумму к оплате. Эмулятор запускает функции расширения локально, в том числе фоновые функции, активируемые событиями, с помощью эмуляторов для Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication и Pub/Sub, а также функции, активируемые Eventarc, реализованные в Cloud Functions версии 2.

Выберите проект Firebase

Firebase Local Emulator Suite эмулирует продукты для одного проекта Firebase.

Чтобы выбрать проект, перед запуском эмуляторов выполните в CLI команду firebase use в рабочем каталоге. или передавать флаг --project каждой команде эмулятора.

Local Emulator Suite поддерживает эмуляцию реальных и демонстрационных проектов Firebase.

Тип проекта Функции Использование с эмуляторами
Реал

Реальный проект Firebase – это проект, который вы создали и настроили (скорее всего, в консоли Firebase).

В реальных проектах есть активные ресурсы, такие как экземпляры баз данных, сегменты хранилища, функции и другие ресурсы, настроенные для этого проекта Firebase.

При работе с реальными проектами Firebase вы можете запускать эмуляторы для любого или всех поддерживаемых продуктов.

Для всех продуктов, которые вы не эмулируете, ваши приложения и код будут взаимодействовать с активным ресурсом (экземпляром базы данных, сегментом хранилища, функцией и т. д.).

Демонстрация

В демонстрационном проекте Firebase нет реальной конфигурации Firebase и активных ресурсов. Обычно доступ к таким проектам осуществляется через практические работы или другие учебные материалы.

Идентификаторы демопроектов имеют префикс demo-.

При работе с демонстрационными проектами Firebase ваши приложения и код взаимодействуют только с эмуляторами. Если приложение попытается взаимодействовать с ресурсом, для которого эмулятор не запущен, код не сработает.

Рекомендуем по возможности использовать демонстрационные проекты. Преимущества подписки на Google One включают:

  • Простая настройка, поскольку вы можете запускать эмуляторы, не создавая проект Firebase.
  • Повышенная безопасность. Если ваш код случайно вызовет неэмулированные (рабочие) ресурсы, данные не будут изменены, а плата за использование не будет взиматься.
  • Улучшенная поддержка офлайн-режима, поскольку для скачивания конфигурации SDK не требуется доступ к интернету.

Как установить и оценить расширение

С помощью эмулятора Extensions можно легко оценить, соответствует ли расширение вашим требованиям.

Предположим, вас интересует расширение Trigger Email (firestore-send-email). Описанный ниже рабочий процесс подходит для любого расширения. При запуске с локальными эмуляторами Trigger Email будет автоматически использовать эмуляторы Cloud Firestore и Cloud Functions.

Чтобы оценить расширение локально:

  1. Добавьте расширение в локальный манифест расширений. Манифест расширений – это список экземпляров расширений и их конфигураций.

    firebase ext:install --local firebase/firestore-send-email

    После выполнения этой команды вам будет предложено настроить последнюю версию расширения firebase/firestore-send-email и сохранить конфигурацию в манифесте, но она не будет развернута в вашем проекте. Подробнее о том, как управлять конфигурацией расширений с помощью манифестов…

  2. Запустите Local Emulator Suite как обычно.

    firebase emulators:start

Теперь, используя экземпляр расширения firestore-send-email, указанный в манифесте, Local Emulator Suite скачает исходный код этого расширения в ~/.cache/firebase/extensions. После скачивания исходного кода запустится Local Emulator Suite, и вы сможете активировать любые функции расширения, запускаемые в фоновом режиме, а также подключить приложение к Local Emulator Suite, чтобы протестировать их интеграцию.

Вы можете использовать Emulator Suite UI, чтобы добавить данные в коллекцию документов электронной почты и настроить другие серверные ресурсы, как того требует расширение Trigger Email.

В неинтерактивных средах тестирования, например в рабочих процессах непрерывной интеграции, можно написать тестовый скрипт для оценки расширения, который, помимо прочего, заполняет необходимые данные Cloud Firestore и запускает функции. Затем вызовите Local Emulator Suite, чтобы выполнить тестовый скрипт:

firebase emulators:exec my-test.sh

Чем тестирование с помощью эмулятора Extensions отличается от работы в рабочей среде

Эмулятор Extensions позволяет тестировать расширения в условиях, максимально приближенных к реальным. Однако есть некоторые отличия от поведения в рабочей среде.

Cloud IAM

Firebase Emulator Suite не пытается воспроизводить или учитывать какое-либо поведение, связанное с IAM, при запуске. Эмуляторы соблюдают правила безопасности Firebase, но в ситуациях, когда обычно используется IAM, например для настройки сервисного аккаунта, вызывающего Cloud Functions, и, следовательно, разрешений, эмулятор не настраивается и будет использовать глобально доступный аккаунт на вашем компьютере для разработки, аналогично непосредственному запуску локального скрипта.

Ограничение по типу триггера

В настоящее время Firebase Local Emulator Suite поддерживает только функции, активируемые HTTP-запросами, триггеры пользовательских событий Eventarc для расширений и функции, активируемые фоновыми событиями для Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication и Pub/Sub. Чтобы оценить расширения, использующие другие типы триггерных функций, вам необходимо установить расширение в тестовом проекте Firebase.

Что дальше?