Подключите свое приложение и приступайте к созданию прототипа

в

Перед тем, как перейти в с Firebase Local Emulator Suite, убедитесь , что вы создали проект Firebase, настроить среду разработки, а также выбраны и установлены Firebase SDKs для вашей платформы в соответствии с началом работы с Firebase темой для вашей платформы: прошивка , Android или Web .

Прототип и испытание

Local Emulator Сюита содержит несколько эмуляторов продукта, как описано в Введение в Firebase Local Emulator Люкс . Вы можете создавать прототипы и тестировать с отдельными эмуляторами, а также с комбинациями эмуляторов по своему усмотрению, в соответствии с тем, какие продукты Firebase вы используете в производстве.

Взаимодействие между Firebase dstabase и эмуляторами функций
База данных и облачная Функция эмуляторы как часть полного местного Emulator люкса .

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

После локальной инициализации проекта Firebase цикл разработки с использованием Local Emulator Suite обычно состоит из трех этапов:

  1. Prototype работает в интерактивном режиме с эмуляторами и пользовательским интерфейсом Emulator Suite.

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

  3. Автоматизируйте свои тесты с помощью эмуляторов и пользовательских скриптов.

Локальная инициализация проекта Firebase

Убедитесь , что вы установите CLI или обновление до последней версии .

curl -sL firebase.tools | bash

Если вы еще не сделали этого, инициализировать текущий рабочий каталог в качестве проекта Firebase, следуя инструкциям на экране , чтобы указать , что вы используете облачные функции и либо Cloud Firestore или в реальном времени базы данных:

firebase init

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

Интерактивный прототип

Local Emulator Suite разработан, чтобы позволить вам быстро создавать прототипы новых функций, а встроенный пользовательский интерфейс Suite является одним из наиболее полезных инструментов для создания прототипов. Это немного похоже на локальную работу консоли Firebase.

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

Все это доступно, если вы запустите Local Emulator Suite с:

firebase emulators:start

Чтобы создать прототип нашего гипотетического приложения, давайте настроим и протестируем базовую облачную функцию для изменения текстовых записей в базе данных, а также создадим и заполним эту базу данных в пользовательском интерфейсе Emulator Suite для ее запуска.

  1. Создание функции облака , спровоцированные записи базы данных путем редактирования functions/index.js файл в директории проекта. Замените содержимое существующего файла следующим фрагментом. Эта функция прослушивает изменения в узлы в messages иерархии, преобразует содержимое узла original собственности в верхний регистр, и сохраняет результат в этом узле в uppercase собственности.
  2.   const functions = require('firebase-functions');
    
      exports.makeUppercase = functions.database.ref('/messages/{pushId}/original')
          .onCreate((snapshot, context) => {
            const original = snapshot.val();
            console.log('Uppercasing', context.params.pushId, original);
            const uppercase = original.toUpperCase();
            return snapshot.ref.parent.child('uppercase').set(uppercase);
          });
      
  3. Запуск локального эмулятора Люкс с firebase emulators:start . Запустятся облачные функции и эмуляторы баз данных, автоматически настроенные для взаимодействия.
  4. Просмотр пользовательского интерфейса в браузере на http://localhost:4000 . Порт 4000 используется по умолчанию для пользовательского интерфейса, но проверяйте вывод сообщений терминала с помощью интерфейса командной строки Firebase. Обратите внимание на статус доступных эмуляторов. В нашем случае будут запущены эмуляторы Cloud Functions и Realtime Database.
    Мой образ
  5. В пользовательском интерфейсе на вкладке Database в реальном времени, с помощью элементов управления редактора содержимого базы данных для создания набора узлов с messages узла , содержащий message1 узел, в свою очередь , содержащий узел с набором ключей для original и значение набора для test . Это запускает нашу облачную функцию. Заметим , что новый uppercase свойство появится в ближайшее время , со значением TEST .
    Мой образМой образ
  6. Проверьте вкладку Logs , чтобы подтвердить функцию не запускать inot ошибок , как это обновил базу данных.

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

Подключите ваше приложение к эмуляторам

Когда вы добьетесь хороших результатов в интерактивном прототипировании и определитесь с дизайном, вы будете готовы добавить код доступа к базе данных в свое приложение с помощью соответствующего SDK. Вы будете продолжать использовать вкладку базы данных и для функций, закладка Журналы в эмуляторе Suite , UI , чтобы подтвердить , что поведение вашего приложения является правильным.

Помните, что Local Emulator Suite - это локальный инструмент разработки. Запись в ваши производственные базы данных не будет запускать функции, прототипы которых вы создаете локально.

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

Android
        // 10.0.2.2 is the special IP address to connect to the 'localhost' of
        // the host computer from an Android emulator.
        FirebaseDatabase database = FirebaseDatabase.getInstance();
        database.useEmulator("10.0.2.2", 9000);
iOS - Swift
    // In almost all cases the ns (namespace) is your project ID.
let db = Database.database(url:"http://localhost:9000?ns=YOUR_DATABASE_NAMESPACE")

Интернет v8

var db = firebase.database();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  db.useEmulator("localhost", 9000);
} 

Интернет v9

import { getDatabase, connectDatabaseEmulator } from "firebase/database";

const db = getDatabase();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  connectDatabaseEmulator(db, "localhost", 9000);
} 

Автоматизируйте свои тесты с помощью пользовательских скриптов

Теперь о последнем общем этапе рабочего процесса. После того, как вы создали прототип своей функции в приложении и она выглядит многообещающей на всех ваших платформах, вы можете перейти к окончательной реализации и тестированию. Для модульного тестирования и CI рабочих процессов, вы можете запустить эмуляторы, запустить сценарные тесты, и закрыли эмуляторы в одном вызове с exec команды:

firebase emulators:exec "./testdir/test.sh"

Изучите отдельные эмуляторы более подробно

Теперь, когда вы увидели, как выглядит основной рабочий процесс на стороне клиента, вы можете продолжить с подробностями об отдельных эмуляторах в Suite, в том числе о том, как их использовать для разработки приложений на стороне сервера:

Что дальше?

Обязательно прочтите темы, связанные с конкретными эмуляторами, указанными выше. Потом: