เรียกใช้ฟังก์ชันในเครื่อง

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

วิธีตั้งค่าข้อมูลเข้าสู่ระบบของผู้ดูแลระบบสำหรับฟังก์ชันจำลอง

  1. เปิด แผงบัญชีบริการ ของ Google Cloud Console
  2. ตรวจสอบว่าได้เลือกบัญชีบริการเริ่มต้นของ App Engine และใช้ เมนูตัวเลือกทางด้านขวาเพื่อเลือกสร้างคีย์
  3. เมื่อมีข้อความแจ้ง ให้เลือก JSON สำหรับประเภทคีย์ แล้วคลิกสร้าง
  4. ตั้งค่าข้อมูลเข้าสู่ระบบเริ่มต้นของ 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 APIs ที่ใช้ 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 emulator

รันไทม์ของ 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 ในเครื่องเป็นพร็อกซีสำหรับโฮสติ้ง

การบันทึก

โปรแกรมจำลองจะสตรีมบันทึกจากฟังก์ชันไปยังหน้าต่างเทอร์มินัลที่ฟังก์ชันดังกล่าว วิ่งได้ โดยแสดงเอาต์พุตทั้งหมดจาก console.log(), console.info(), console.error() และ console.warn() คำสั่งภายในฟังก์ชันของคุณ

ขั้นตอนถัดไป

สำหรับตัวอย่างแบบเต็มของการใช้ชุดโปรแกรมจำลอง Firebase โปรดดูที่ การทดสอบการเริ่มต้นอย่างรวดเร็วตัวอย่าง