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

в

Перед тем, как перейти в с Firebase Local Emulator Suite, убедитесь , что вы создали проект Firebase, настроить среду разработки, а также выбраны и установлены Firebase SDKs для вашей платформы в соответствии с началом работы с Firebase темой для вашей платформы: IOS , 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.firestore.document('/messages/{documentId}')
          .onCreate((snap, context) => {
            const original = snap.data().original;
            console.log('Uppercasing', context.params.documentId, original);
            const uppercase = original.toUpperCase();
            return snap.ref.set({uppercase}, {merge: true});
          });
      
  3. Запуск локального эмулятора Люкс с firebase emulators:start . Запустятся облачные функции и эмуляторы баз данных, автоматически настроенные для взаимодействия.
  4. Просмотр пользовательского интерфейса в браузере на http://localhost:4000 . Порт 4000 используется по умолчанию для пользовательского интерфейса, но проверяйте вывод сообщений терминала с помощью интерфейса командной строки Firebase. Обратите внимание на статус доступных эмуляторов. В нашем случае будут запущены эмуляторы Cloud Functions и Cloud Firestore.
    Мой образ
  5. В пользовательском интерфейсе на вкладке Firestore, на вложенной вкладке Данные выберите коллекцию Пуск и следуйте инструкциям , чтобы создать новый документ в messages коллекции, с FIELDNAME original и значением test . Это запускает нашу облачную функцию. Заметим , что новый uppercase поле появляется в ближайшее время , заполняется строка «TEST».
    Мой образМой образ
  6. На Firestore> просит вкладку, изучить запросы , сделанные в вашу базу данных, имитации , включая все оценки правил безопасности Firebase проводятся в рамках выполнения этих запросов.
  7. Проверьте вкладку Logs , чтобы подтвердить функцию не впадать в ошибки , как это обновил базу данных.

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

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

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

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

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

Android
        // 10.0.2.2 is the special IP address to connect to the 'localhost' of
        // the host computer from an Android emulator.
        FirebaseFirestore firestore = FirebaseFirestore.getInstance();
        firestore.useEmulator("10.0.2.2", 8080);

        FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
                .setPersistenceEnabled(false)
                .build();
        firestore.setFirestoreSettings(settings);
iOS - Swift
let settings = Firestore.firestore().settings
settings.host = "localhost:8080"
settings.isPersistenceEnabled = false 
settings.isSSLEnabled = false
Firestore.firestore().settings = settings

Веб-версия 9

import { getFirestore, connectFirestoreEmulator } from "firebase/firestore";

// firebaseApps previously initialized using initializeApp()
const db = getFirestore();
connectFirestoreEmulator(db, 'localhost', 8080);

Веб-версия 8

// Firebase previously initialized using firebase.initializeApp().
var db = firebase.firestore();
if (location.hostname === "localhost") {
  db.useEmulator("localhost", 8080);
}
Интернет
// Initialize your Web app as described in the Get started for Web
// Firebase previously initialized using firebase.initializeApp().
var db = firebase.firestore();
if (location.hostname === "localhost") {
  db.useEmulator("localhost", 8080);
}

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

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

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

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

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

Что дальше?

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