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

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"

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

โปรดทราบว่าเอาต์พุตของโปรแกรมจำลองจะจำลองการติดตั้งใช้งานฟังก์ชันในภูมิภาคที่เฉพาะเจาะจง (us-central1) โดยค่าเริ่มต้น ซึ่งอาจไม่ตรงกับภูมิภาคเริ่มต้นของการติดตั้งใช้งานจริง ดูข้อมูลเพิ่มเติมเกี่ยวกับภูมิภาคได้ที่ Cloud Functions ตำแหน่ง สำหรับข้อมูลเพิ่มเติม

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

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

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

หากกิจกรรมการสร้างต้นแบบและการทดสอบเกี่ยวข้องกับฟังก์ชันแบ็กเอนด์ที่เรียกใช้ได้ ให้กำหนดค่าการโต้ตอบกับ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)
Unity
FirebaseFunctions functions = FirebaseFunctions.DefaultInstance;
// Connects to the Functions Emulator running on port 5001
functions.UseFunctionsEmulator("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
  • โปรแกรมจำลอง 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 คอนโซล (รวมถึงในบันทึก)

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

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