ก่อนที่คุณจะเข้าร่วมด้วย Firebase Local Emulator Suite ตรวจสอบให้แน่ใจว่าคุณได้สร้างโปรเจ็กต์ Firebase ตั้งค่าสภาพแวดล้อมการพัฒนาของคุณ และเลือกและติดตั้ง Firebase SDK สำหรับแพลตฟอร์มของคุณตามหัวข้อ เริ่มต้นใช้งาน Firebase สำหรับแพลตฟอร์มของคุณ: Apple , Android หรือ เว็บ
ต้นแบบและการทดสอบ
Local Emulator Suite มีตัวจำลองผลิตภัณฑ์หลายตัว ตามที่อธิบายไว้ใน Introduction to Firebase Local Emulator Suite คุณสามารถสร้างต้นแบบและทดสอบด้วยอีมูเลเตอร์แต่ละตัว รวมถึงอีมูเลเตอร์หลายตัวรวมกันตามที่เห็นสมควร ซึ่งสอดคล้องกับผลิตภัณฑ์ Firebase ที่คุณใช้ในการผลิต

สำหรับหัวข้อนี้ เพื่อแนะนำเวิร์กโฟลว์ Local Emulator Suite สมมติว่าคุณกำลังทำงานกับแอปที่ใช้ชุดผลิตภัณฑ์ทั่วไป: ฐานข้อมูล Firebase และฟังก์ชันระบบคลาวด์ที่ทริกเกอร์โดยการดำเนินการในฐานข้อมูลนั้น
หลังจากที่คุณเริ่มต้นโปรเจ็กต์ Firebase ในเครื่องแล้ว รอบการพัฒนาโดยใช้ Local Emulator Suite จะมีสามขั้นตอนดังนี้
คุณสมบัติต้นแบบแบบโต้ตอบกับอีมูเลเตอร์และ Emulator Suite UI
หากคุณกำลังใช้โปรแกรมจำลองฐานข้อมูลหรือโปรแกรมจำลอง Cloud Functions ให้ดำเนินการขั้นตอนเดียวเพื่อเชื่อมต่อแอปของคุณกับโปรแกรมจำลอง
ทำให้การทดสอบของคุณเป็นแบบอัตโนมัติด้วยโปรแกรมจำลองและสคริปต์ที่กำหนดเอง
เริ่มต้นโปรเจ็กต์ Firebase ในเครื่อง
ตรวจสอบให้แน่ใจว่าคุณ ติดตั้ง CLI หรือ อัปเดตเป็นเวอร์ชันล่าสุด
curl -sL firebase.tools | bash
หากคุณยังไม่ได้ดำเนินการดังกล่าว ให้เริ่มต้นไดเร็กทอรีการทำงานปัจจุบันเป็นโปรเจ็กต์ Firebase โดยทำตามคำแนะนำบนหน้าจอเพื่อระบุว่าคุณกำลังใช้ Cloud Functions และ Cloud Firestore หรือ Realtime Database :
firebase init
ไดเรกทอรีโครงการของคุณจะมีไฟล์การกำหนดค่า Firebase ไฟล์คำจำกัดความกฎความปลอดภัยของ Firebase สำหรับฐานข้อมูล ไดเรกทอรี functions
ที่มีรหัสฟังก์ชันระบบคลาวด์ และไฟล์สนับสนุนอื่นๆ
ต้นแบบแบบโต้ตอบ
Local Emulator Suite ได้รับการออกแบบมาเพื่อให้คุณสร้างต้นแบบคุณลักษณะใหม่ๆ ได้อย่างรวดเร็ว และอินเทอร์เฟซผู้ใช้ในตัวของ Suite ก็เป็นหนึ่งในเครื่องมือสร้างต้นแบบที่มีประโยชน์ที่สุด มันเหมือนกับการมีคอนโซล Firebase ทำงานในเครื่อง
เมื่อใช้ Emulator Suite UI คุณสามารถทำซ้ำการออกแบบฐานข้อมูล ลองใช้โฟลว์ข้อมูลต่างๆ ที่เกี่ยวข้องกับฟังก์ชันระบบคลาวด์ ประเมินการเปลี่ยนแปลงกฎความปลอดภัย ตรวจสอบบันทึกเพื่อยืนยันประสิทธิภาพของบริการแบ็คเอนด์ และอื่นๆ จากนั้น ถ้าคุณต้องการเริ่มต้นใหม่ เพียงแค่ล้างฐานข้อมูลของคุณ และเริ่มต้นใหม่ด้วยแนวคิดการออกแบบใหม่
ทั้งหมดนี้พร้อมใช้งานเมื่อคุณเริ่ม Local Emulator Suite ด้วย:
firebase emulators:start
ในการสร้างต้นแบบแอปสมมุติของเรา ให้ตั้งค่าและทดสอบฟังก์ชันระบบคลาวด์พื้นฐานเพื่อแก้ไขรายการข้อความในฐานข้อมูล แล้วสร้างและเติมฐานข้อมูลนั้นใน Emulator Suite UI เพื่อทริกเกอร์
- สร้างฟังก์ชันระบบคลาวด์ที่ทริกเกอร์โดยการเขียนฐานข้อมูลโดยแก้ไขไฟล์
functions/index.js
ในไดเรกทอรีโครงการของคุณ แทนที่เนื้อหาของไฟล์ที่มีอยู่ด้วยตัวอย่างต่อไปนี้ ฟังก์ชันนี้จะคอยรับฟังการเปลี่ยนแปลงของเอกสารในคอลเลกชั่นmessages
แปลงเนื้อหาของฟิลด์original
ของเอกสารเป็นตัวพิมพ์ใหญ่ และเก็บผลลัพธ์ในฟิลด์uppercase
ของเอกสารนั้น - เปิด Local Emulator Suite ด้วย
firebase emulators:start
Cloud Functions และโปรแกรมจำลองฐานข้อมูลเริ่มทำงาน กำหนดค่าให้ทำงานร่วมกันโดยอัตโนมัติ - ดู UI ในเบราว์เซอร์ของคุณที่
http://localhost:4000
พอร์ต 4000 เป็นค่าเริ่มต้นสำหรับ UI แต่ให้ตรวจสอบข้อความเทอร์มินัลที่ส่งออกโดย Firebase CLI สังเกตสถานะของอีมูเลเตอร์ที่มี ในกรณีของเรา Cloud Functions และโปรแกรมจำลอง Cloud Firestore จะทำงาน
- ใน UI บนแท็บ Firestore บนแท็บย่อย Data ให้คลิก Start collection และปฏิบัติตามคำแนะนำเพื่อสร้างเอกสารใหม่ในคอลเลกชัน
messages
โดยใช้ fieldnameoriginal
และ valuetest
สิ่งนี้จะกระตุ้นการทำงานของระบบคลาวด์ของเรา สังเกตว่าฟิลด์uppercase
ใหม่จะปรากฏขึ้นในไม่ช้า เติมด้วยสตริง "TEST"
- บนแท็บ Firestore > คำขอ ให้ตรวจสอบคำขอที่ส่งไปยังฐานข้อมูลที่จำลองของคุณ รวมถึงการประเมินกฎความปลอดภัยของ Firebase ทั้งหมดที่ดำเนินการโดยเป็นส่วนหนึ่งของการปฏิบัติตามคำขอเหล่านั้น
- ตรวจสอบแท็บ บันทึก เพื่อยืนยันว่าฟังก์ชันของคุณไม่มีข้อผิดพลาดขณะอัปเดตฐานข้อมูล
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}); });
คุณสามารถทำซ้ำระหว่างโค้ดฟังก์ชันระบบคลาวด์และการแก้ไขฐานข้อมูลแบบโต้ตอบได้อย่างง่ายดาย จนกว่าคุณจะได้รับโฟลว์ข้อมูลที่ต้องการ โดยไม่ต้องแตะรหัสการเข้าถึงฐานข้อมูลในแอป การคอมไพล์ใหม่ และรันชุดทดสอบซ้ำ
เชื่อมต่อแอพของคุณกับอีมูเลเตอร์
เมื่อคุณก้าวหน้าไปด้วยดีกับการสร้างต้นแบบเชิงโต้ตอบและได้ตกลงกับการออกแบบแล้ว คุณก็พร้อมที่จะเพิ่มรหัสการเข้าถึงฐานข้อมูลลงในแอปของคุณโดยใช้ SDK ที่เหมาะสม คุณจะใช้แท็บฐานข้อมูลต่อไป และสำหรับฟังก์ชันต่างๆ แท็บ บันทึก ใน Emulator 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);
Swift
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); }
ทำให้การทดสอบของคุณเป็นแบบอัตโนมัติด้วยสคริปต์ที่กำหนดเอง
ตอนนี้สำหรับขั้นตอนเวิร์กโฟลว์โดยรวมล่าสุด เมื่อคุณสร้างต้นแบบฟีเจอร์ของคุณในแอปแล้วและดูเหมือนว่าจะมีแนวโน้มที่ดีบนทุกแพลตฟอร์มของคุณ คุณสามารถเปลี่ยนไปใช้การใช้งานและการทดสอบขั้นสุดท้ายได้ สำหรับการทดสอบหน่วยและเวิร์กโฟลว์ CI คุณสามารถเริ่มต้นโปรแกรมจำลอง เรียกใช้การทดสอบสคริปต์ และปิดโปรแกรมจำลองในการเรียกครั้งเดียวด้วยคำสั่ง exec
:
firebase emulators:exec "./testdir/test.sh"
สำรวจอีมูเลเตอร์แต่ละตัวในเชิงลึกมากขึ้น
ตอนนี้คุณได้เห็นหน้าตาของเวิร์กโฟลว์พื้นฐานฝั่งไคลเอ็นต์แล้ว คุณสามารถดำเนินการต่อด้วยรายละเอียดเกี่ยวกับอีมูเลเตอร์แต่ละตัวใน Suite รวมถึงวิธีใช้งานสำหรับการพัฒนาแอปฝั่งเซิร์ฟเวอร์:
- เพิ่มโปรแกรมจำลองการตรวจสอบสิทธิ์ให้กับเวิร์กโฟลว์การสร้างต้นแบบของคุณ
- เรียนรู้เกี่ยวกับคุณสมบัติโปรแกรมจำลองฐานข้อมูลเรียลไทม์ในเชิงลึก
- เรียนรู้เกี่ยวกับฟีเจอร์ตัวจำลอง Cloud Storage แบบเจาะลึก
- เรียนรู้เกี่ยวกับฟีเจอร์ตัวจำลอง Cloud Firestore แบบเจาะลึก
- เชื่อมต่อแอปของคุณกับโปรแกรมจำลอง Cloud Functions
- ประเมิน Firebase Extensions พร้อมๆ กับลดต้นทุนการเรียกเก็บเงินด้วย Extensions emulator
อะไรต่อไป?
อย่าลืมอ่านหัวข้อที่เกี่ยวข้องกับอีมูเลเตอร์บางตัวที่ลิงก์ด้านบน แล้ว:
- สำหรับชุดวิดีโอที่ได้รับการดูแลจัดการและตัวอย่างวิธีการโดยละเอียด ให้ทำตาม เพลย์ลิสต์การฝึกอบรม Firebase Emulators
- ตรวจสอบกรณีการใช้งานขั้นสูงที่เกี่ยวข้องกับการทดสอบกฎความปลอดภัยและ Firebase Test SDK: ทดสอบกฎความปลอดภัย (Cloud Firestore) ทดสอบกฎความปลอดภัย (ฐานข้อมูลเรียลไทม์) และ ทดสอบกฎความปลอดภัย (ที่เก็บข้อมูลบนคลาวด์)