Uygulamanızı Cloud Firestore Emulator'a bağlayın

Bulut Firestore emülatörü için uygulamanızı bağlamadan önce, emin olun genel Firebase Yerel Emülatörü Suite iş akışını anlama ve bunu yüklemek ve yapılandırmak Yerel Emülatörü Suite ve onun gözden CLI komutlarını .

Bir Firebase projesi seçin

Firebase Local Emulator Suite, ürünleri tek bir Firebase projesi için öykünür.

Eğer CLI koşmak içinde, emülatörler başlamadan önce, kullanımına projeyi seçmek için firebase use için çalışma dizininde. Veya, geçebilir --project her emülatör komutuna bayrağı.

Yerel Emulator Suite gerçek Firebase projeleri ve demo projelerin öykünme destekler.

Proje tipi Özellikleri Emülatörlerle kullanın
Gerçek

Gerçek bir Firebase projesi, sizin oluşturduğunuz ve yapılandırdığınız projedir (büyük olasılıkla Firebase konsolu aracılığıyla).

Gerçek projeler, veritabanı örnekleri, depolama paketleri, işlevler veya o Firebase projesi için kurduğunuz diğer kaynaklar gibi canlı kaynaklara sahiptir.

Gerçek Firebase projeleriyle çalışırken, desteklenen ürünlerin herhangi biri veya tümü için öykünücüler çalıştırabilirsiniz.

Eğer taklit etmiyorsunuz herhangi ürünlerde, uygulamalar ve kod canlı kaynak (veritabanı örneği, depolama kovası, fonksiyonu, vb) ile etkileşim olacaktır.

Demo

Bir demo Firebase projesi gerçek Firebase yapılandırma ve hiçbir canlı kaynaklara sahiptir. Bu projelere genellikle kod laboratuvarları veya diğer öğreticiler aracılığıyla erişilir.

Demo projeler için Proje kimlikleri var demo- önek.

Demo Firebase projeleri uygulamalarınıza ve sadece benzeticileri olan kod etkileştiği ile çalışırken. Uygulamanız, bir öykünücünün çalışmadığı bir kaynakla etkileşim kurmaya çalışırsa, bu kod başarısız olur.

Mümkün olan her yerde demo projeleri kullanmanızı öneririz. Avantajlar şunları içerir:

  • Bir Firebase projesi oluşturmadan öykünücüleri çalıştırabileceğiniz için daha kolay kurulum
  • Daha güçlü güvenlik, çünkü kodunuz yanlışlıkla taklit edilmeyen (üretim) kaynakları çalıştırırsa, veri değişikliği, kullanım ve faturalandırma şansı yoktur.
  • SDK yapılandırmanızı indirmek için internete erişmeniz gerekmediğinden daha iyi çevrimdışı destek.

Emülatörlerle konuşmak için uygulamanızı enstrümantal edin

Android, iOS ve Web SDK'ları

Cloud Firestore ile etkileşim kurmak için uygulama içi yapılandırmanızı veya test sınıflarınızı aşağıdaki gibi ayarlayın.

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 - Hızlı
let settings = Firestore.firestore().settings
settings.host = "localhost:8080"
settings.isPersistenceEnabled = false 
settings.isSSLEnabled = false
Firestore.firestore().settings = settings

Web sürümü 9

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

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

Web sürümü 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);
}

Ek kurulum Bulut İşlevleri test etmek gereklidir Firestore olaylar tarafından tetiklenen emülatörü kullanarak. Firestore ve Cloud Functions öykünücülerinin ikisi de çalışırken otomatik olarak birlikte çalışırlar.

Yönetici SDK'ları

Zaman Firebase Yönetici SDK'larını otomatik Bulut Firestore emülatörü bağlanmak FIRESTORE_EMULATOR_HOST ortam değişkeni ayarlanır:

export FIRESTORE_EMULATOR_HOST="localhost:8080"

Kodunuzu Bulut Fonksiyonlar içine çalışıyorsa ararken proje kimliği ve diğer yapılandırma otomatik olarak ayarlanır emülatörü initalizeApp .

Başka bir ortamdan Cloud Firestore öykünücüsüne bağlanırken bir proje kimliği belirtmeniz gerekir. Sen bir proje kimliğine geçebilir initializeApp doğrudan veya set GCLOUD_PROJECT ortam değişkeni. Gerçek Firebase proje kimliğinizi kullanmanız gerekmediğini unutmayın; Bulut Firestore emülatörü de başlarına olduğu gibi, herhangi bir proje kimliğine kabul eder geçerli biçimi .

Node.js Yönetici SDK'sı
admin.initializeApp({ projectId: "your-project-id" });
Çevre değişkeni
export GCLOUD_PROJECT="your-project-id"

Testler arasında veritabanınızı temizleyin

Üretim Firestore, veritabanını temizlemek için bir platform SDK yöntemi sağlamaz, ancak Firestore öykünücüsü size bu amaç için özel olarak bir REST uç noktası sağlar; bu, bir test çerçevesi kurulumu/tearDown adımından, bir test sınıfından veya kabuktan (örn. ile curl ) bir test başlatıldı önce. Bu yaklaşımı, öykünücü işlemini basitçe kapatmaya bir alternatif olarak kullanabilirsiniz.

Uygun bir yöntemde, örneğin için, sizin Firebase projectID tedarik, bir HTTP DELETE işlemi gerçekleştirmek firestore-emulator-example aşağıdaki bitiş noktasına,:

"http://localhost:8080/emulator/v1/projects/firestore-emulator-example/databases/(default)/documents"

Doğal olarak, kodunuz temizleme işleminin bittiğine veya başarısız olduğuna dair REST onayını beklemelidir.

Bu işlemi kabuktan gerçekleştirebilirsiniz:

// Shell alternative…
$ curl -v -X DELETE "http://localhost:8080/emulator/v1/projects/firestore-emulator-example/databases/(default)/documents"

Bunun gibi bir adım uyguladıktan sonra, testlerinizi sıralayabilir ve çalıştırmalar arasında eski verilerin temizleneceğinden ve yeni bir temel test yapılandırması kullandığınızdan emin olarak işlevlerinizi tetikleyebilirsiniz.

Verileri içe ve dışa aktarma

Veritabanı ve Cloud Storage öykünücüleri, çalışan bir öykünücü örneğinden verileri dışa aktarmanıza olanak tanır. Birim testlerinizde veya sürekli entegrasyon iş akışlarınızda kullanmak için temel bir veri seti tanımlayın ve ardından ekip arasında paylaşılmak üzere dışa aktarın.

firebase emulators:export ./dir

Testlerde, öykünücünün başlangıcında temel verileri içe aktarın.

firebase emulators:start --import=./dir

Sen bir ihracat yolu belirterek veya basitçe geçirilen yolu kullanarak, ya kapatma ihracat verilerine emülatör talimat verebilirsiniz --import bayrağı.

firebase emulators:start --import=./dir --export-on-exit

Bu veriler ithalat ve ihracat seçenekleri ile çalışmak firebase emulators:exec komutunu sıra. Daha fazla bilgi için, bkz emülatör komut referans .

Güvenlik Kuralları etkinliğini görselleştirin

Prototip ve test döngüleri üzerinde çalışırken, Local Emulator Suite tarafından sağlanan görselleştirme araçlarını ve raporlarını kullanabilirsiniz.

İstek İzleyici'yi kullanın

Cloud Firestore öykünücüsü, Firebase Güvenlik Kuralları için değerlendirme izleme de dahil olmak üzere, Emulator Suite Kullanıcı Arayüzündeki istemci isteklerini görselleştirmenize olanak tanır.

Her istek için ayrıntılı değerlendirme sırasını görüntülemek için Firestore> İstekler sekmesini açın.

Güvenlik Kuralları değerlendirmelerini gösteren Firestore Öykünücü İstekleri İzleyicisi

Kural değerlendirme raporlarını görselleştirin

Prototipinize Güvenlik Kuralları eklerken, Local Emulator Suite hata ayıklama araçlarıyla bu kuralların hatalarını ayıklayabilirsiniz.

Bir dizi test çalıştırdıktan sonra, güvenlik kurallarınızın her birinin nasıl değerlendirildiğini gösteren test kapsamı raporlarına erişebilirsiniz.

Raporları almak için, öykünücü çalışırken açıkta kalan bir uç noktayı sorgulayın. Tarayıcı dostu bir sürüm için aşağıdaki URL'yi kullanın:

http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage.html

Bu, kurallarınızı, değerlendirme sayısı ve döndürülen değerler de dahil olmak üzere daha fazla bilgi için fareyle üzerine gelebileceğiniz ifadelere ve alt ifadelere böler. Bu verilerin ham JSON sürümü için sorgunuza aşağıdaki URL'yi ekleyin:

http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage

Burada, raporun HTML sürümü, tanımsız ve boş değer hataları oluşturan değerlendirmeleri vurgular:

sınırlamalar

Cloud Firestore Öykünücüsü, bazı dikkate değer sınırlamalarla üretim hizmetinin davranışını aslına uygun olarak çoğaltmaya çalışır:

  • Endeksler. Öykünücü, bileşik dizinleri izlemez ve bunun yerine geçerli herhangi bir sorguyu yürütür. Hangi dizinlere ihtiyacınız olacağını belirlemek için uygulamanızı gerçek bir Cloud Firestore örneğine karşı test ettiğinizden emin olun.
  • Sınırları. Öykünücü, üretimde uygulanan tüm sınırları zorlamaz. Örneğin öykünücü, üretim hizmeti tarafından çok büyük olduğu için reddedilecek işlemlere izin verebilir. Emin aşina olun belgelenmiş sınırlar proaktif bunları önlemek için uygulamanızı tasarlayıp olduğunu ve.

Sırada ne var?