Uygulamanızı Cloud Firestore öykünücüsüne bağlamadan önce , genel Firebase Local Emulator Suite iş akışını anladığınızdan ve Local Emulator Suite'i kurup yapılandırdığınızdan ve CLI komutlarını gözden geçirdiğinizden emin olun.
Bir Firebase projesi seçin
Firebase Local Emulator Suite, tek bir Firebase projesi için ürünleri öykünür.
Kullanılacak projeyi seçmek için, öykünücüleri başlatmadan önce, CLI'de çalışma dizininizde firebase use
. Veya --project
bayrağını her bir öykünücü komutuna iletebilirsiniz.
Local Emulator Suite, gerçek Firebase projelerinin ve demo projelerinin öykünmesini destekler.
Proje tipi | Özellikler | 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. Taklit etmediğiniz tüm ürünler için uygulamalarınız ve kodunuz canlı kaynakla (veritabanı örneği, depolama grubu, işlev vb.) etkileşime girer. |
Demo | Bir demo Firebase projesinin gerçek bir Firebase konfigürasyonu ve canlı kaynakları yoktur. Bu projelere genellikle kod laboratuvarları veya diğer öğreticiler aracılığıyla erişilir. Demo projeleri için proje kimlikleri demo ön | Demo Firebase projeleriyle çalışırken, uygulamalarınız ve kodunuz yalnızca öykünücülerle etkileşime girer. 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, Apple platformları 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);
Süratli
let settings = Firestore.firestore().settings settings.host = "localhost:8080" settings.isPersistenceEnabled = false settings.isSSLEnabled = false Firestore.firestore().settings = settings
Web version 9
import { getFirestore, connectFirestoreEmulator } from "firebase/firestore"; // firebaseApps previously initialized using initializeApp() const db = getFirestore(); connectFirestoreEmulator(db, 'localhost', 8080);
Web version 8
// Firebase previously initialized using firebase.initializeApp(). var db = firebase.firestore(); if (location.hostname === "localhost") { db.useEmulator("localhost", 8080); }
Öykünücüyü kullanarak Firestore olayları tarafından tetiklenen Bulut İşlevlerini test etmek için ek kurulum gerekmez. Firestore ve Cloud Functions öykünücülerinin ikisi de çalışırken otomatik olarak birlikte çalışırlar.
Yönetici SDK'ları
Firebase Admin SDK'ları, FIRESTORE_EMULATOR_HOST
ortam değişkeni ayarlandığında otomatik olarak Cloud Firestore öykünücüsüne bağlanır:
export FIRESTORE_EMULATOR_HOST="localhost:8080"
Kodunuz Cloud Functions öykünücüsü içinde çalışıyorsa, proje kimliğiniz ve diğer yapılandırmanız, initalizeApp
otomatik olarak ayarlanır.
Yönetici SDK kodunuzun başka bir ortamda çalışan paylaşılan bir öykünücüye bağlanmasını istiyorsanız , Firebase CLI kullanarak ayarladığınız proje kimliğinin aynısını belirtmeniz gerekir. App'i doğrudan initializeApp
için bir proje kimliği iletebilir veya GCLOUD_PROJECT
ortam değişkenini ayarlayabilirsiniz.
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. , curl
ile) bir test başlatılmadan önce. Bu yaklaşımı, öykünücü sürecini basitçe kapatmaya bir alternatif olarak kullanabilirsiniz.
Uygun bir yöntemde, örneğin firestore-emulator-example
gibi Firebase proje kimliğinizi aşağıdaki uç noktaya sağlayarak bir HTTP DELETE işlemi gerçekleştirin:
"http://localhost:8080/emulator/v1/projects/firestore-emulator-example/databases/(default)/documents"
Doğal olarak, kodunuz, temizlemenin 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, çalıştırmalar arasında eski verilerin temizleneceğinden ve yeni bir temel test yapılandırması kullandığınızdan emin olarak testlerinizi sıralayabilir ve 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
Öykünücüye, bir dışa aktarma yolu belirterek veya yalnızca --import
bayrağına iletilen yolu kullanarak, kapatma sırasında verileri dışa aktarma talimatı verebilirsiniz.
firebase emulators:start --import=./dir --export-on-exit
Bu veri içe ve dışa aktarma seçenekleri, firebase emulators:exec
komutuyla da çalışır. Daha fazla bilgi için emülatör komutu referansına bakın.
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ı Arabiriminde 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.
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:
Cloud Firestore öykünücüsünün üretimden farkı
Cloud Firestore Öykünücüsü, bazı dikkate değer sınırlamalarla üretim hizmetinin davranışını aslına uygun olarak kopyalamaya çalışır.
işlemler
Öykünücü şu anda üretimde görülen tüm işlem davranışlarını uygulamıyor. Bir belgeye birden çok eşzamanlı yazma içeren özellikleri test ederken, öykünücü yazma isteklerini tamamlamakta yavaş olabilir. Bazı durumlarda kilitlerin açılması 30 saniye kadar sürebilir. Gerekirse test zaman aşımlarını buna göre ayarlamayı düşünün.
dizinler
Ö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.
limitler
Ö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. Belgelenen sınırlara aşina olduğunuzdan ve uygulamanızı proaktif olarak bunlardan kaçınmak için tasarladığınızdan emin olun.
Sıradaki ne?
- Bir dizi video ve ayrıntılı nasıl yapılır örnekleri için Firebase Emulators Eğitim Oynatma Listesini izleyin.
- Güvenlik Kuralları testini ve Firebase Test SDK'sını içeren gelişmiş kullanım örneklerini araştırın: Test Güvenlik Kuralları (Firestore) .
- Tetiklenen işlevler, Cloud Firestore ile tipik bir entegrasyon olduğundan, işlevleri yerel olarak çalıştır bölümünde Firebase için Bulut İşlevleri öykünücüsü hakkında daha fazla bilgi edinin.