Прежде чем использовать эмулятор 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 или другие обучающие материалы. Идентификаторы демонстрационных проектов имеют префикс | При работе с демонстрационными проектами Firebase ваши приложения и код взаимодействуют только с эмуляторами. Если ваше приложение попытается взаимодействовать с ресурсом, для которого эмулятор не запущен, этот код завершится ошибкой. |
Мы рекомендуем по возможности использовать демонстрационные проекты. Преимущества включают:
- Упрощенная настройка, поскольку вы можете запускать эмуляторы, не создавая проект Firebase.
- Повышенная безопасность, поскольку если ваш код случайно вызовет неэмулированные (производственные) ресурсы, исключается возможность изменения данных, их использования и выставления счетов.
- Улучшена поддержка работы в автономном режиме, поскольку для загрузки конфигурации SDK не требуется доступ к интернету.
Установите и оцените расширение.
Использовать эмулятор Extensions , чтобы оценить, соответствует ли расширение вашим потребностям, очень просто.
Предположим, вас интересует расширение Trigger Email ( firestore-send-email ), хотя описанный ниже алгоритм работы применим к любому расширению. При запуске с локальными эмуляторами Trigger Email автоматически будет использовать эмуляторы Cloud Firestore и Cloud Functions .
Для локальной оценки расширения:
Добавьте расширение в локальный манифест расширений. Манифест расширений представляет собой список экземпляров расширений и их конфигураций.
firebase ext:install --local firebase/firestore-send-email
Выполнение указанной выше команды предложит вам настроить последнюю версию расширения
firebase/firestore-send-emailи сохранить конфигурацию в манифесте, но не развернет конфигурацию в вашем проекте. Подробнее об этом см. в разделе «Управление конфигурацией расширений с помощью манифестов».Запустите 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.
Что дальше?
- Чтобы ознакомиться с тщательно подобранной подборкой видеороликов и подробными примерами, перейдите по ссылке на плейлист «Обучение работе с эмуляторами Firebase» .