Firebase CLI มีโปรแกรมจำลอง Cloud Functions ซึ่งจำลองประเภทฟังก์ชันต่อไปนี้ได้
- ฟังก์ชัน HTTPS
- ฟังก์ชันที่เรียกใช้ได้
- ฟังก์ชันเบื้องหลังที่เกิดจากการตรวจสอบสิทธิ์ Firebase, Realtime Database, Cloud Firestore, Cloud Storage และ 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 APIs หรือ Firebase API อื่นๆ ผ่าน Firebase Admin SDK คุณอาจต้องกำหนดข้อมูลเข้าสู่ระบบของผู้ดูแลระบบ
- ทริกเกอร์ Cloud Firestore และ Realtime Database มีข้อมูลเข้าสู่ระบบเพียงพออยู่แล้ว และไม่ต้องมีการตั้งค่าเพิ่มเติม
- API อื่นๆ ทั้งหมด รวมถึง Firebase API เช่น Authentication และ FCM หรือ Google APIs เช่น Cloud Translation หรือ Cloud Speech ต้องมีขั้นตอนการตั้งค่าตามที่อธิบายไว้ในส่วนนี้ ซึ่งจะมีผลไม่ว่าคุณจะใช้ Shell ของ 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 และ API ของ Google ได้โดยใช้ Admin SDK ตัวอย่างเช่น เมื่อทดสอบทริกเกอร์การตรวจสอบสิทธิ์ ฟังก์ชันที่จำลองอาจเรียกใช้ 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
หากต้องการเริ่มต้นโปรแกรมจำลองที่ต้องการ ให้ใช้แฟล็ก --only
firebase emulators:start --only functions
หากต้องการเรียกใช้ชุดทดสอบหรือสคริปต์การทดสอบหลังจากที่โปรแกรมจำลองเริ่มทำงานแล้ว ให้ใช้คำสั่ง emulators:exec
firebase emulators:exec "./my-test.sh"
ใช้เครื่องดนตรีกับแอปเพื่อพูดคุยกับโปรแกรมจำลอง
หากต้องการให้แอปโต้ตอบกับโปรแกรมจำลอง คุณอาจต้องกำหนดค่าเพิ่มเติมบางอย่าง
ใช้เครื่องวัดการทำงานของแอปสำหรับฟังก์ชันที่เรียกใช้ได้
หากกิจกรรมต้นแบบและกิจกรรมทดสอบของคุณเกี่ยวข้องกับฟังก์ชันแบ็กเอนด์ที่เรียกใช้ได้ ให้กำหนดค่าการโต้ตอบกับโปรแกรมจำลองฟังก์ชันระบบคลาวด์สำหรับ 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
วัดคุมแอปสำหรับการจำลองฟังก์ชันที่ทริกเกอร์ในเบื้องหลัง
โปรแกรมจำลอง Cloud Functions รองรับฟังก์ชันที่ทริกเกอร์ในเบื้องหลังจากแหล่งที่มาต่อไปนี้
- โปรแกรมจำลอง Realtime Database
- โปรแกรมจำลอง Cloud Firestore
- โปรแกรมจำลองการตรวจสอบสิทธิ์
- โปรแกรมจำลอง Pub/Sub
หากต้องการทริกเกอร์เหตุการณ์ในเบื้องหลัง ให้แก้ไขทรัพยากรแบ็กเอนด์โดยใช้ 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
คุณแก้ไขพอร์ตเริ่มต้นได้ตามที่อธิบายไว้ในส่วนกำหนดค่าชุดโปรแกรมจำลองภายใน
เมื่อกำหนดค่าตัวแปรสภาพแวดล้อมอย่างถูกต้อง Firebase Admin SDK จะส่งเหตุการณ์ไปยังโปรแกรมจำลอง Eventarc โดยอัตโนมัติ โปรแกรมจำลอง Eventarc จะเรียกกลับไปที่โปรแกรมจำลอง Cloud Functions เพื่อทริกเกอร์เครื่องจัดการที่ลงทะเบียนทั้งหมด
คุณสามารถตรวจสอบบันทึกฟังก์ชันใน 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
หากคุณมีฟังก์ชันที่ใช้ Firebase Admin SDK (เวอร์ชัน 9.3.0 ขึ้นไป) ในการเขียนไปยังการตรวจสอบสิทธิ์ Firebase ระบบจะส่งการเขียนเหล่านี้ไปยังโปรแกรมจำลองการตรวจสอบสิทธิ์หากทำงานอยู่ หากการเขียนเหล่านั้นทริกเกอร์ฟังก์ชันอื่นๆ ฟังก์ชันเหล่านั้นจะทำงานในโปรแกรมจำลอง Cloud Functions
โฮสติ้งของ Firebase
หากคุณใช้ Cloud Functions เพื่อสร้างเนื้อหาแบบไดนามิกสำหรับโฮสติ้งของ Firebase firebase emulators:start
จะใช้ฟังก์ชัน HTTP ในเครื่องเป็นพร็อกซีสำหรับโฮสติ้ง
Logging
โปรแกรมจำลองจะสตรีมบันทึกจากฟังก์ชันไปยังหน้าต่างเทอร์มินัลที่เรียกใช้ ซึ่งจะแสดงเอาต์พุตทั้งหมดจากคำสั่ง console.log()
, console.info()
, console.error()
และ console.warn()
ภายในฟังก์ชันของคุณ
ขั้นตอนถัดไป
ดูตัวอย่างที่สมบูรณ์ของการใช้ชุดโปรแกรมจำลอง Firebase ได้ที่ตัวอย่างการเริ่มต้นการทดสอบอย่างรวดเร็ว