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

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

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

  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 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"

ใช้งานแอปเพื่อสื่อสารกับโปรแกรมจำลอง

หากต้องการใช้งานแอปเพื่อโต้ตอบกับโปรแกรมจำลอง คุณอาจต้องทำการกำหนดค่าเพิ่มเติม

ใช้งานแอปสำหรับฟังก์ชันที่เรียกใช้ได้

หากกิจกรรมการสร้างต้นแบบและการทดสอบเกี่ยวข้องกับฟังก์ชันแบ็กเอนด์ที่เรียกใช้ได้ ให้กำหนดค่าการโต้ตอบกับ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)

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 วิธีจำลองทริกเกอร์การแจ้งเตือน

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

การบันทึก

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

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

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