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"
หลังจากเริ่มต้นแล้ว โปรแกรมจำลองจะสตรีมบันทึกจากฟังก์ชันไปยังหน้าต่างเทอร์มินัลที่เรียกใช้ และแสดงเอาต์พุตทั้งหมดจากคำสั่ง console.log(), console.info(), console.error() และ console.warn() ภายในฟังก์ชัน
โปรดทราบว่าเอาต์พุตของโปรแกรมจำลองจะจำลองการติดตั้งใช้งานฟังก์ชันในภูมิภาคที่เฉพาะเจาะจง (us-central1) โดยค่าเริ่มต้น ซึ่งอาจไม่ตรงกับภูมิภาคเริ่มต้นของการติดตั้งใช้งานจริง ดูข้อมูลเพิ่มเติมเกี่ยวกับภูมิภาคได้ที่ Cloud Functions ตำแหน่ง สำหรับข้อมูลเพิ่มเติม
ใช้งานแอปให้สื่อสารกับโปรแกรมจำลอง
หากต้องการใช้งานแอปให้โต้ตอบกับโปรแกรมจำลอง คุณอาจต้องทำการกำหนดค่าเพิ่มเติม
วัดคุมแอปสำหรับฟังก์ชันที่เรียกใช้ได้
หากกิจกรรมการสร้างต้นแบบและการทดสอบเกี่ยวข้องกับฟังก์ชันแบ็กเอนด์ที่เรียกใช้ได้ ให้กำหนดค่าการโต้ตอบกับ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)
Unity
FirebaseFunctions functions = FirebaseFunctions.DefaultInstance; // Connects to the Functions Emulator running on port 5001 functions.UseFunctionsEmulator("http://127.0.0.1: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 คอนโซล (รวมถึงในบันทึก)
ขั้นตอนถัดไป
ดูตัวอย่างการใช้งานชุดโปรแกรมจำลอง Firebase แบบเต็มได้ที่ ตัวอย่างการเริ่มต้นใช้งานอย่างรวดเร็วสำหรับการทดสอบ