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

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 APIs หรือ Firebase อื่นๆ คุณอาจต้องตั้งค่า API ผ่านทาง Firebase Admin SDK ข้อมูลเข้าสู่ระบบของผู้ดูแลระบบ

  • ทริกเกอร์ Cloud Firestore และ Realtime Database มีข้อมูลเข้าสู่ระบบเพียงพออยู่แล้ว และไม่จําเป็นต้องตั้งค่าเพิ่มเติม
  • API อื่นๆ ทั้งหมด รวมถึง Firebase API เช่น Authentication และ FCM หรือ Google API เช่น Cloud Translation หรือ Cloud Speech ต้องมีขั้นตอนการตั้งค่าตามที่อธิบายไว้ในส่วนนี้ ซึ่งจะมีผลไม่ว่าคุณจะใช้ Shell ของ Cloud Functions หรือ firebase emulators:start

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

  1. เปิดแผงบัญชีบริการของคอนโซล Google Cloud
  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 เช่น เมื่อทดสอบทริกเกอร์ 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 หากต้องการเริ่มใช้งานโปรแกรมจำลองบางรายการ ให้ใช้แฟล็ก --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
  • โปรแกรมจำลองการแจ้งเตือนของ 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 วิธีจําลองทริกเกอร์การแจ้งเตือน

  1. เปิดแท็บ FireAlerts แท็บนี้จะแสดงเมนูแบบเลื่อนลงที่มีประเภทการแจ้งเตือนที่มีทริกเกอร์เชื่อมโยงอยู่ (เช่น หากคุณมีทริกเกอร์ onNewFatalIssuePublished ระบบจะแสดง crashlytics.newFatalIssue)
  2. เลือกประเภทการแจ้งเตือน แบบฟอร์มจะเติมข้อมูลอัตโนมัติ ด้วยค่าเริ่มต้น ซึ่ง แก้ไขได้ คุณสามารถแก้ไขช่องของเหตุการณ์ (อื่นๆ ข้อมูลจากเหตุการณ์การแจ้งเตือนอาจเป็นข้อมูลอนุมาน ค่าจำลอง หรือ ที่สร้างขึ้นแบบสุ่ม)
  3. เลือกส่งการแจ้งเตือนเพื่อส่งการแจ้งเตือนแบบสังเคราะห์ไปยังโปรแกรมจำลองฟังก์ชัน โดยมีบันทึกการบันทึกอยู่ในการแจ้งเตือนในคอนโซล Firebase (รวมถึงในบันทึก)

การบันทึก

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

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

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