Firebase CLI มีโปรแกรมจำลอง Cloud Functions ซึ่งจำลองฟังก์ชันประเภท ต่อไปนี้ได้
- ฟังก์ชัน HTTPS
- ฟังก์ชันที่เรียกใช้ได้
- ฟังก์ชันคิวงาน
- ฟังก์ชันพื้นหลังที่ทริกเกอร์จาก Firebase Authentication, Realtime Database, Cloud Firestore, Cloud Storage, การแจ้งเตือนของ Firebase ที่รองรับ, และ Cloud Pub/Sub
คุณสามารถเรียกใช้ฟังก์ชันในเครื่องเพื่อทดสอบก่อนที่จะติดตั้งใช้งานจริง
ติดตั้ง Firebase CLI
Cloud Shellหากต้องการใช้โปรแกรมจำลอง Cloud Functions ให้ติดตั้ง Firebase CLI ก่อนโดยทำดังนี้
npm install -g firebase-tools
หากต้องการใช้โปรแกรมจำลองในเครื่อง Cloud Functions ต้องขึ้นอยู่กับสิ่งต่อไปนี้
firebase-adminเวอร์ชัน8.0.0ขึ้นไปfirebase-functionsเวอร์ชัน3.0.0ขึ้นไป
ตั้งค่าข้อมูลเข้าสู่ระบบของผู้ดูแลระบบ (ไม่บังคับ)
หากต้องการให้การทดสอบฟังก์ชันโต้ตอบกับ Google API หรือ Firebase API อื่นๆ ผ่าน Firebase Admin SDK คุณอาจต้องตั้งค่า ข้อมูลเข้าสู่ระบบของผู้ดูแลระบบ
- ทริกเกอร์ Cloud Firestore และ Realtime Database มีข้อมูลเข้าสู่ระบบที่เพียงพออยู่แล้ว จึงไม่ ต้องตั้งค่าเพิ่มเติม
- API อื่นๆ ทั้งหมด รวมถึง Firebase API เช่น Authentication และ FCM หรือ Google API เช่น Cloud Translation หรือ Cloud Speech จำเป็นต้องทำตามขั้นตอนการตั้งค่าที่อธิบายไว้ในส่วนนี้ ซึ่งใช้ได้ไม่ว่าคุณจะใช้เชลล์ Cloud Functions หรือ
firebase emulators:start
วิธีตั้งค่าข้อมูลเข้าสู่ระบบของผู้ดูแลระบบสำหรับฟังก์ชันที่จำลอง
- เปิด บานหน้าต่างบัญชีบริการ ของคอนโซล Google Cloud
- ตรวจสอบว่าได้เลือกApp Engineบัญชีบริการเริ่มต้นแล้ว และใช้ เมนูตัวเลือกทางด้านขวาเพื่อเลือกสร้างคีย์
- เมื่อได้รับข้อความแจ้ง ให้เลือก JSON สำหรับประเภทคีย์ แล้วคลิกสร้าง
ตั้งค่าข้อมูลเข้าสู่ระบบเริ่มต้นของ Google ให้ชี้ไปยังคีย์ที่ดาวน์โหลด
Unix
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase emulators:start
Windows
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase emulators:start
หลังจากทำตามขั้นตอนเหล่านี้แล้ว การทดสอบฟังก์ชันจะเข้าถึง Firebase และ
Google API ได้โดยใช้ Admin SDK เช่น เมื่อทดสอบ
ทริกเกอร์Authentication ฟังก์ชันที่จำลองอาจเรียก
admin.auth().getUserByEmail(email)
ตั้งค่าการกำหนดค่าฟังก์ชัน (ไม่บังคับ)
หากใช้ตัวแปรการกำหนดค่าฟังก์ชันที่กำหนดเอง ให้เรียกใช้คำสั่งเพื่อรับการกำหนดค่าที่กำหนดเอง (เรียกใช้ภายในไดเรกทอรี functions) ในสภาพแวดล้อมในเครื่องก่อน
firebase functions:config:get > .runtimeconfig.json # If using Windows PowerShell, replace the above with: # firebase functions:config:get | ac .runtimeconfig.json
เรียกใช้ชุดโปรแกรมจำลอง
หากต้องการเรียกใช้โปรแกรมจำลอง Cloud Functions ให้ใช้คำสั่ง emulators:start
firebase emulators:start
คำสั่ง emulators:start จะเริ่มโปรแกรมจำลองสำหรับ Cloud Functions, Cloud Firestore, Realtime Database และโฮสติ้งของ Firebase โดยอิงตามผลิตภัณฑ์ที่คุณเริ่มต้นใช้งานในโปรเจ็กต์ที่อยู่ในเครื่องโดยใช้ firebase
init หากต้องการเริ่มโปรแกรมจำลองที่เฉพาะเจาะจง ให้ใช้แฟล็ก --only
firebase emulators:start --only functions
หากต้องการเรียกใช้ชุดการทดสอบหรือสคริปต์การทดสอบหลังจากที่โปรแกรมจำลองเริ่มทำงานแล้ว ให้ใช้คำสั่ง emulators:exec
firebase emulators:exec "./my-test.sh"
ใช้งานแอปเพื่อสื่อสารกับโปรแกรมจำลอง
หากต้องการใช้งานแอปเพื่อโต้ตอบกับโปรแกรมจำลอง คุณอาจต้องทำการกำหนดค่าเพิ่มเติม
ใช้งานแอปสำหรับฟังก์ชันที่เรียกใช้ได้
หากกิจกรรมการสร้างต้นแบบและการทดสอบเกี่ยวข้องกับฟังก์ชันแบ็กเอนด์ที่เรียกใช้ได้ ให้กำหนดค่าการโต้ตอบกับCloud Functions for Firebaseโปรแกรมจำลองดังนี้
Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val functions = Firebase.functions functions.useEmulator("10.0.2.2", 5001)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseFunctions functions = FirebaseFunctions.getInstance(); functions.useEmulator("10.0.2.2", 5001);
Swift
Functions.functions().useEmulator(withHost: "localhost", port: 5001)
Web
import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; const functions = getFunctions(getApp()); connectFunctionsEmulator(functions, "127.0.0.1", 5001);
Web
firebase.functions().useEmulator("127.0.0.1", 5001);
ใช้งานแอปสำหรับการจำลองฟังก์ชัน HTTPS
ระบบจะให้บริการฟังก์ชัน HTTPS แต่ละฟังก์ชันในโค้ดจากโปรแกรมจำลองในเครื่องโดยใช้รูปแบบ URL ต่อไปนี้
http://$HOST:$PORT/$PROJECT/$REGION/$NAME
เช่น ฟังก์ชัน helloWorld อย่างง่ายที่มีพอร์ตโฮสต์และภูมิภาคเริ่มต้นจะให้บริการที่
https://localhost:5001/$PROJECT/us-central1/helloWorld
ใช้งานแอปสำหรับการจำลองฟังก์ชันคิวงาน
โปรแกรมจำลองจะตั้งค่าคิวงานที่จำลองโดยอัตโนมัติตามคำจำกัดความของทริกเกอร์ และ Admin SDK จะเปลี่ยนเส้นทางคำขอที่เข้าคิวไปยังโปรแกรมจำลองหากตรวจพบว่ากำลังทำงานผ่านตัวแปรสภาพแวดล้อม CLOUD_TASKS_EMULATOR_HOST
โปรดทราบว่าระบบการส่งงานที่ใช้ในเวอร์ชันที่ใช้งานจริงมีความซับซ้อนกว่าระบบที่ใช้ในโปรแกรมจำลอง ดังนั้นคุณจึงไม่ควรคาดหวังว่าลักษณะการทำงานที่จำลองจะเหมือนกับสภาพแวดล้อมเวอร์ชันที่ใช้งานจริงทุกประการ พารามิเตอร์ภายในโปรแกรมจำลองจะกำหนดขอบเขตบนของอัตราที่งานจะได้รับการส่งและลองอีกครั้ง
ใช้งานแอปสำหรับการจำลองฟังก์ชันที่ทริกเกอร์จากพื้นหลัง
โปรแกรมจำลอง Cloud Functions รองรับฟังก์ชันที่ทริกเกอร์จากพื้นหลังจากแหล่งที่มาต่อไปนี้
- โปรแกรมจำลอง Realtime Database
- โปรแกรมจำลอง Cloud Firestore
- โปรแกรมจำลอง Authentication
- โปรแกรมจำลอง Pub/Sub
- โปรแกรมจำลองการแจ้งเตือนของ Firebase
หากต้องการทริกเกอร์เหตุการณ์พื้นหลัง ให้แก้ไขทรัพยากรแบ็กเอนด์โดยใช้ Emulator Suite UI หรือเชื่อมต่อแอปหรือโค้ดทดสอบกับโปรแกรมจำลอง โดยใช้ SDK สำหรับแพลตฟอร์มของคุณ
ทดสอบแฮนเดิลเลอร์สำหรับเหตุการณ์ที่กำหนดเองที่ส่วนขยายปล่อยออกมา
สำหรับฟังก์ชันที่คุณติดตั้งใช้งานเพื่อจัดการเหตุการณ์ที่กำหนดเองFirebase Extensions ด้วย Cloud Functions v2 โปรแกรมจำลอง Cloud Functions จะทำงานร่วมกับ โปรแกรมจำลอง Eventarc เพื่อรองรับ ทริกเกอร์ Eventarc
หากต้องการทดสอบแฮนเดิลเลอร์เหตุการณ์ที่กำหนดเองสำหรับส่วนขยายที่ปล่อยเหตุการณ์ออกมา คุณต้องติดตั้ง โปรแกรมจำลอง Cloud Functions และ Eventarc
รันไทม์ของ Cloud Functions จะตั้งค่าตัวแปรสภาพแวดล้อม EVENTARC_EMULATOR เป็น localhost:9299 ในกระบวนการปัจจุบันหากโปรแกรมจำลอง Eventarc กำลังทำงานอยู่ Firebase Admin SDK จะเชื่อมต่อกับโปรแกรมจำลอง Eventarc
โดยอัตโนมัติเมื่อตั้งค่าตัวแปรสภาพแวดล้อม EVENTARC_EMULATOR คุณสามารถ
แก้ไขพอร์ตเริ่มต้นได้ตามที่อธิบายไว้ในส่วนกำหนดค่า Local Emulator Suite
เมื่อกำหนดค่าตัวแปรสภาพแวดล้อมอย่างถูกต้องแล้ว Firebase Admin SDK จะส่งเหตุการณ์ไปยังโปรแกรมจำลอง Eventarc โดยอัตโนมัติ จากนั้นโปรแกรมจำลอง Eventarc จะเรียกกลับไปยังโปรแกรมจำลอง Cloud Functions เพื่อทริกเกอร์แฮนเดิลเลอร์ที่ ลงทะเบียนไว้
คุณสามารถตรวจสอบบันทึกของฟังก์ชันใน Emulator Suite UI เพื่อดูรายละเอียดเกี่ยวกับการดำเนินการของแฮนเดิลเลอร์
การโต้ตอบกับบริการอื่นๆ
ชุดโปรแกรมจำลองประกอบด้วยโปรแกรมจำลองหลายรายการ ซึ่งช่วยให้ทดสอบการโต้ตอบระหว่างผลิตภัณฑ์ได้
Cloud Firestore
หากคุณมีฟังก์ชันที่ใช้ Firebase Admin SDK เพื่อเขียนไปยัง Cloud Firestore ระบบจะส่งการเขียนเหล่านี้ไปยังโปรแกรมจำลอง Cloud Firestore หากกำลังทำงานอยู่ หากฟังก์ชันอื่นๆ ได้รับการทริกเกอร์จากการเขียนเหล่านั้น ระบบจะเรียกใช้ฟังก์ชันเหล่านั้นในโปรแกรมจำลอง Cloud Functions
Cloud Storage
หากคุณมีฟังก์ชันที่ใช้ Firebase Admin SDK (เวอร์ชัน 9.7.0 ขึ้นไป) เพื่อเขียนไปยัง Cloud Storage ระบบจะส่งการเขียนเหล่านี้ไปยังโปรแกรมจำลอง Cloud Storage หากกำลังทำงานอยู่ หากฟังก์ชันอื่นๆ ได้รับการทริกเกอร์จากการเขียนเหล่านั้น ระบบจะเรียกใช้ฟังก์ชันเหล่านั้นในโปรแกรมจำลอง Cloud Functions
Firebase Authentication
หากคุณมีฟังก์ชันที่ใช้ Firebase Admin SDK (เวอร์ชัน 9.3.0 ขึ้นไป) เพื่อเขียนไปยัง Firebase Authentication ระบบจะส่งการเขียนเหล่านี้ไปยังโปรแกรมจำลองการตรวจสอบสิทธิ์ หากกำลังทำงานอยู่ หากฟังก์ชันอื่นๆ ได้รับการทริกเกอร์จากการเขียนเหล่านั้น ระบบจะเรียกใช้ฟังก์ชันเหล่านั้นในโปรแกรมจำลอง Cloud Functions
โฮสติ้งของ Firebase
หากคุณใช้ Cloud Functions เพื่อ สร้างเนื้อหาแบบไดนามิกสำหรับ
Firebase Hosting firebase emulators:start
จะใช้ฟังก์ชัน HTTP ในเครื่องเป็นพร็อกซีสำหรับการโฮสต์
การแจ้งเตือนสำหรับ Firebase
ในโปรเจ็กต์ที่มีทริกเกอร์การแจ้งเตือนของ Firebase ที่รองรับอย่างน้อย 1 รายการ UI ของโปรแกรมจำลองจะมีแท็บ FireAlerts วิธีจำลองทริกเกอร์การแจ้งเตือน
- เปิดแท็บ FireAlerts แท็บนี้จะแสดงเมนูแบบเลื่อนลงที่ป้อนข้อมูลประเภทการแจ้งเตือนที่มีทริกเกอร์เชื่อมโยงอยู่ (เช่น หากคุณมีทริกเกอร์ onNewFatalIssuePublished ระบบจะแสดง crashlytics.newFatalIssue)
- เลือกประเภทการแจ้งเตือน แบบฟอร์มจะป้อนค่าเริ่มต้นโดยอัตโนมัติ ซึ่งคุณสามารถแก้ไขได้ คุณสามารถแก้ไขช่องของเหตุการณ์ได้ (ระบบจะอนุมานข้อมูลอื่นๆ จากเหตุการณ์การแจ้งเตือน ใช้ค่าจำลอง หรือสร้างขึ้นแบบสุ่ม)
- เลือกส่งการแจ้งเตือน เพื่อส่งการแจ้งเตือนสังเคราะห์ไปยังโปรแกรมจำลองฟังก์ชัน โดยจะมีการบันทึกในการแจ้งเตือน ในFirebase คอนโซล (รวมถึงในบันทึก)
การบันทึก
โปรแกรมจำลองจะสตรีมบันทึกจากฟังก์ชันไปยังหน้าต่างเทอร์มินัลที่ฟังก์ชันทำงานอยู่ โดยจะแสดงเอาต์พุตทั้งหมดจากคำสั่ง console.log(), console.info(), console.error() และ console.warn() ภายในฟังก์ชัน
ขั้นตอนถัดไป
ดูตัวอย่างการใช้งานชุดโปรแกรมจำลอง Firebase แบบเต็มได้ที่ ตัวอย่างการเริ่มต้นใช้งานอย่างรวดเร็วสำหรับการทดสอบ