Firebase CLI มีโปรแกรมจำลอง Cloud Functions ซึ่งจำลองประเภทฟังก์ชันต่อไปนี้ได้
- ฟังก์ชัน HTTPS
- ฟังก์ชันที่เรียกใช้ได้
- ฟังก์ชันคิวงาน
- ฟังก์ชันเบื้องหลังที่ทริกเกอร์จาก Firebase Authentication, Realtime Database, Cloud Firestore, Cloud Storage, การแจ้งเตือน Firebase ที่รองรับ และ Cloud Pub/Sub
คุณเรียกใช้ฟังก์ชันในเครื่องเพื่อทดสอบฟังก์ชันเหล่านั้นก่อนทำให้ใช้งานได้จริงได้
ติดตั้ง Firebase CLI
หากต้องการใช้โปรแกรมจำลอง 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 Hosting โดยอิงตามผลิตภัณฑ์ที่คุณเริ่มต้นใช้งานในโปรเจ็กต์ในเครื่องโดยใช้ firebase
init
หากต้องการเริ่มโปรแกรมจำลองที่เฉพาะเจาะจง ให้ใช้ Flag --only
ดังนี้
firebase emulators:start --only functions
หากต้องการเรียกใช้ชุดทดสอบหรือสคริปต์การทดสอบหลังจากที่โปรแกรมจำลองเริ่มทำงานแล้ว ให้ใช้คำสั่ง emulators:exec
firebase emulators:exec "./my-test.sh"
เครื่องมือวัดผลแอปเพื่อพูดคุยกับโปรแกรมจำลอง
หากต้องการเครื่องมือวัดแอปเพื่อโต้ตอบกับโปรแกรมจําลอง คุณอาจต้องทําการกําหนดค่าเพิ่มเติมบางอย่าง
ใช้เครื่องวัดการทำงานของแอปสำหรับฟังก์ชันที่เรียกใช้ได้
หากกิจกรรมการสร้างต้นแบบและการทดสอบเกี่ยวข้องกับฟังก์ชันแบ็กเอนด์ที่เรียกใช้ได้ ให้กําหนดค่าการโต้ตอบกับโปรแกรมจําลอง Cloud Functions for Firebase ดังนี้
Kotlin+KTX
// 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().useFunctionsEmulator(origin: "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 emulator
- Cloud Firestore emulator
- Authentication emulator
- Pub/Sub emulator
- โปรแกรมจำลองการแจ้งเตือนของ Firebase
หากต้องการทริกเกอร์เหตุการณ์ในเบื้องหลัง ให้แก้ไขทรัพยากรแบ็กเอนด์โดยใช้ Emulator Suite UI หรือโดยการเชื่อมต่อแอปหรือโค้ดทดสอบกับโปรแกรมจำลองโดยใช้ SDK สำหรับแพลตฟอร์มของคุณ
เครื่องจัดการทดสอบสำหรับเหตุการณ์ที่กำหนดเองที่เกิดจากส่วนขยาย
สําหรับฟังก์ชันที่คุณติดตั้งใช้งานเพื่อจัดการFirebase Extensionsเหตุการณ์ที่กําหนดเองCloud Functionsกับ 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 ทั้งหมดได้ที่ตัวอย่างการเริ่มต้นใช้งานการทดสอบอย่างรวดเร็ว