Firebase Data Connect, uçtan uca prototip oluşturmanın yanı sıra sürekli entegrasyon ve sürekli dağıtım (CI/CD) akışları için yerel bir emülatör sağlar:
- Data Connect emülatörü, sorguları ve mutasyonları prototip olarak oluşturmanıza ve istemci kodunu tamamen yerel bir ortamda test etmenize olanak tanımak için yerel olarak entegre edilmiş bir PGLite veritabanı örneğiyle etkileşime girer.
- Data Connect emülatörü, etkileşimli olmayan çalışmalar için de kullanılabilir. Otomatik testler çalıştırmanıza olanak tanır ve CI/CD iş akışlarıyla kullanıma uygundur. Bu, şemalarınız kararlı olduğunda ve istemci tarafı kodunu prototip oluşturup test etmek istediğinizde kullanışlıdır.
Bu kılavuzda, emülatörün kurulumu ve kullanımı hızlı başlangıç kılavuzuna kıyasla daha ayrıntılı bir şekilde ele alınmaktadır.
Data Connect emülatörünü yükleme
Data Connect emülatörünü kullanmak için Local Emulator Suite uygulamasını yüklemeden önce ihtiyacınız olacaklar:
- Node.js 18.0 veya sonraki bir sürüm.
Firebase CLI'yı yükleme ve proje dizinini ayarlama
Firebase CLI'yı yükleme kılavuzunu izleyerek yükleyin. Data Connect emülatörü, hata düzeltmeleri ve yeni özelliklerle aktif olarak geliştirildiğinden düzenli olarak güncellediğinizden emin olun.
Henüz yapmadıysanız hangi ürünlerin kullanılacağını belirtmek için istemleri izleyerek geçerli çalışma dizinini Firebase projesi olarak başlatın:
firebase init
Local Emulator Suite yapılandırmasını ayarlama veya değiştirme
Data Connect emülatörünü Firebase VS Code uzantısından başlattıysanız emülatör, gerekirse sizin için yüklenmiştir.
Emülatörü Firebase'nın seçilen diğer bileşenleriyle birlikte manuel olarak yüklemek için Firebase CLI'yı kullanabilirsiniz.Local Emulator Suite Bu komut, ilgilendiğiniz emülatörleri seçmenize, ilgili emülatör ikili dosyalarını indirmenize ve varsayılanlar uygun değilse emülatör bağlantı noktalarını ayarlamanıza olanak tanıyan bir yapılandırma sihirbazı başlatır.
firebase init emulators
Bir emülatör yüklendikten sonra, Firebase CLI sürümünüzü güncelleyene kadar güncelleme kontrolü yapılmaz ve ek otomatik indirme işlemi gerçekleşmez.
Bir Firebase projesi seçin
Kurulum akışında Firebase CLI, bir Firebase projesi seçmenizi veya oluşturmanızı ister. Firebase konsolunda Firebase ile ayarladığınız mevcut bir projeyi seçerseniz orada seçtiğiniz yapılandırma önerilir.Data Connect
Emülatörü ayarlama
Emülatörü yapılandırma
firebase init
akışını çalıştırmak, emülatör kurulum seçenekleri konusunda size yol gösterir.
Local Emulator Suite içindeki diğer emülatörler gibi, yapılandırma parametreleri yerel proje dosyalarında depolanır.
firebase.json
dosyanızda emülatör bağlantı noktası atamaları var.emulators:ui
anahtarı, Data Connect emülatörü için geçerli değildir.
Yerel ve üretim Data Connect kaynaklarıyla çalışma
Üretim kaynaklarını etkilemediğinizden emin olmak istiyorsanız demo-
projectID ayarlayın veya istemci kodunuzun, sonraki bir bölümde ele alındığı gibi, emülatöre bağlanacak şekilde yapılandırıldığından emin olun.
Emülatörü başlatma
Emülatörü etkileşimli olmayan bir şekilde (ör. CI/CD iş akışları için) çalıştırıyorsanız exec
seçeneğiyle başlatın.
firebase emulators:exec ./path/to/test-script.sh
Önceden tanımlanmış sorguları ve mutasyonları istemci koduna entegre ediyorsanız ve emülatörü özellikle istemcileri test etmek için kullanıyorsanız etkileşimli çalışma için start
seçeneğini kullanabilirsiniz. Emülatörü VS Code uzantısından da başlatabilirsiniz.
firebase emulators:start
Müşteri kodunuzu emülatörle iletişim kuracak şekilde düzenleyin
Uygulama içi yapılandırmanızı veya test sınıflarınızı, Data Connect emülatörüyle etkileşimde bulunacak şekilde aşağıdaki gibi ayarlayın.
JavaScript
import { initializeApp } from "firebase/app"; import { connectorConfig } from "@name-of-package"; import { connectDataConnectEmulator, getDataConnect } from 'firebase/data-connect'; // TODO: Replace the following with your app's Firebase project configuration const firebaseConfig = { //... }; const app = initializeApp(firebaseConfig); const dataConnect = getDataConnect(app, connectorConfig); connectDataConnectEmulator(dataConnect, "localhost", 9399); // Make calls from your app
Kotlin Android
val connector = MoviesConnector.instance // Connect to the emulator on "10.0.2.2:9399" connector.dataConnect.useEmulator() // (Alternatively) if you're running your emulator on non-default port: connector.dataConnect.useEmulator(port = 9999) // Make calls from your app
iOS
let connector = DataConnect.dataConnect(DefaultConnectorClient.connectorConfig) // Connect to the emulator on "127.0.0.1:9399" connector.useEmulator() // (alternatively) if you're running your emulator on non-default port: connector.useEmulator(port: 9999) // Make calls from your app
Test ve sürekli entegrasyon için emülatörü kullanma
Container mimarisine alınmış Local Emulator Suite görüntülerini çalıştırma
Tipik bir CI kurulumunda Local Emulator Suite'nın kapsayıcılarla yüklenmesi ve yapılandırılması kolaydır.
Dikkat edilmesi gereken birkaç nokta vardır:
- Emülatör ikilileri
~/.cache/firebase/emulators/
konumuna yüklenir ve önbelleğe alınır. Tekrar tekrar indirme yapmamak için bu yolu CI önbellek yapılandırmanıza ekleyebilirsiniz. - Deponuzda
firebase.json
dosyası yoksa hangi emülatörlerin başlatılacağını belirtmek içinemulators:start
veyaemulators:exec
komutuna bir komut satırı bağımsız değişkeni eklemeniz gerekir. Örneğin,--only dataconnect
.
Testler arasında veritabanınızı temizleyin
Firebase, test ortamlarınızı koşular arasında sıfırlamak için şunları yapmanızı önerir:
- Aşağıdakileri işlemek için özel mutasyonlar yazma:
- Kurulum sırasında, yerel veritabanı örneğini başlangıç verileriyle doldurun.
- Sökme işleminde, test sonrası veritabanı örneğinden değiştirilen verileri silin.
Data Connect emülatörünün üretimden farkı
Data Connect emülatörü, sunucu tarafı ürünün birçok özelliğini simüle eder. Ancak dikkat etmeniz gereken bazı istisnalar vardır:
- PGLite'ın sürümü ve ayrıntılı yapılandırması, üretim Cloud SQL örneğinizin sürümünden farklı olabilir.
- Data Connect's
pgvector ve Vertex API entegrasyonu ile geliştirme yapmak için emülatörü kullanıyorsanız Cloud Vertex API'ye yapılan çağrılar, Cloud SQL'in Vertex entegrasyonu üzerinden değil doğrudan yapılır. Ancak üretim API'sine yapılan çağrılar devam eder. Bu nedenle gerçek bir Firebase projesi kullanmanız gerekir,
demo-
projesi kullanamazsınız ve Vertex API'nin maliyetleri oluşur.