Используйте эмулятор расширений для оценки расширений

Прежде чем использовать эмулятор 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 v2.

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

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

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

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

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

Настоящий проект Firebase — это тот, который вы создали и настроили (скорее всего, через консоль Firebase ).

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

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

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

Демо

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

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

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

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

  • Упрощенная настройка, поскольку вы можете запускать эмуляторы, не создавая проект 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.

Что дальше?