เชลล์ Cloud Functions มีเชลล์แบบโต้ตอบสำหรับการเรียกใช้ฟังก์ชันด้วยข้อมูลการทดสอบ เชลล์รองรับทริกเกอร์ทุกประเภท
ตั้งค่าข้อมูลประจำตัวของผู้ดูแลระบบ (ไม่บังคับ)
หากคุณต้องการให้การทดสอบฟังก์ชันโต้ตอบกับ Google API หรือ Firebase API อื่นๆ ผ่าน Firebase Admin SDK คุณอาจต้องตั้งค่าข้อมูลรับรองผู้ดูแลระบบ
- ทริกเกอร์ Cloud Firestore และ Realtime Database มีข้อมูลรับรองเพียงพออยู่แล้ว และ ไม่ ต้องการการตั้งค่าเพิ่มเติม
- API อื่นๆ ทั้งหมด รวมถึง Firebase API เช่น Authentication และ FCM หรือ Google APIs เช่น Cloud Translation หรือ Cloud Speech ต้องมีขั้นตอนการตั้งค่าที่อธิบายไว้ในส่วนนี้ สิ่งนี้ใช้ได้ไม่ว่าคุณจะใช้เชลล์ Cloud Functions หรือ
firebase emulators:start
ในการตั้งค่าข้อมูลประจำตัวของผู้ดูแลระบบสำหรับฟังก์ชันที่จำลอง:
- เปิด บานหน้าต่างบัญชีบริการ ของ Google Cloud Console
- ตรวจสอบให้แน่ใจว่าได้เลือก บัญชีบริการเริ่มต้นของ App Engine และใช้เมนูตัวเลือกที่ด้านขวาเพื่อเลือก สร้างคีย์
- เมื่อได้รับแจ้ง ให้เลือก JSON สำหรับประเภทคีย์ แล้วคลิก Create
ตั้งค่าข้อมูลรับรองเริ่มต้นของ Google ให้ชี้ไปที่คีย์ที่ดาวน์โหลด:
Unix
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" firebase functions:shell
Windows
set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json firebase functions:shell
หลังจากทำตามขั้นตอนเหล่านี้เสร็จแล้ว การทดสอบฟังก์ชันจะเข้าถึง Firebase และ Google API ได้โดยใช้ Admin SDK ตัวอย่างเช่น เมื่อทำการทดสอบทริกเกอร์การตรวจสอบสิทธิ์ ฟังก์ชันจำลองอาจเรียก admin.auth().getUserByEmail(email)
ให้บริการฟังก์ชันโดยใช้เชลล์ Cloud Functions
เชลล์ Cloud Functions จำลองทริกเกอร์ฟังก์ชันทุกประเภทด้วยเชลล์แบบโต้ตอบสำหรับการเรียกใช้ฟังก์ชันด้วยข้อมูลทดสอบ ตัวเลือกแตกต่างกันไปตามประเภทของฟังก์ชัน แต่รูปแบบการใช้งานพื้นฐานคือ:
myFunctionName(data, options)
พารามิเตอร์ data
จำเป็นสำหรับทริกเกอร์ Realtime Database, Cloud Firestore และ PubSub และไม่บังคับสำหรับประเภทฟังก์ชันอื่นๆ ทั้งหมด นอกจากนี้ พารามิเตอร์ options
เสริมยังใช้ได้กับฟังก์ชัน Realtime Database และ Cloud Firestore เท่านั้น
คุณสามารถโหลดข้อมูลทดสอบจากไฟล์ในเครื่องได้โดยการบันทึกไฟล์เป็นตัวแปรและเรียกใช้ฟังก์ชันด้วย:
var data = require('./path/to/testData.json');
myFunction(data);
ติดตั้งและกำหนดค่าเชลล์ Cloud Functions
หากต้องการใช้ฟีเจอร์นี้ firebase-tools
firebase ต้องมีเวอร์ชันขั้นต่ำ 3.11.0 และ SDK firebase-functions
firebase ต้องมีเวอร์ชันขั้นต่ำ 0.6.2 หากต้องการอัปเดตทั้งสอง ให้รันคำสั่งต่อไปนี้ในไดเร็กทอรี functions/
สำหรับโปรเจ็กต์ของคุณ:
npm install --save firebase-functions@latest
npm install -g firebase-tools
หากคุณกำลังใช้ตัวแปรการกำหนดค่าฟังก์ชันแบบกำหนดเอง ก่อนอื่นให้รันคำสั่งเพื่อรับการกำหนดค่าแบบกำหนดเองของคุณ (เรียกใช้สิ่งนี้ภายในไดเร็กทอรี functions
) ในสภาพแวดล้อมภายในของคุณ:
firebase functions:config:get > .runtimeconfig.json # If using Windows PowerShell, replace the above with: # firebase functions:config:get | ac .runtimeconfig.json
สุดท้าย รันเชลล์ด้วยคำสั่งต่อไปนี้:
firebase functions:shell
เรียกใช้ฟังก์ชัน HTTPS
สำหรับการเรียกใช้ฟังก์ชัน HTTPS ในเชลล์ การใช้งานจะเหมือนกับโมดูล request
NPM แต่แทนที่ request
ด้วยชื่อของฟังก์ชันที่คุณต้องการจำลอง ตัวอย่างเช่น:
# invoke
myHttpsFunction()
myHttpsFunction.get()
myHttpsFunction.post()
# invoke at sub-path
myHttpsFunction('/path')
myHttpsFunction.get('/path')
myHttpsFunction.post('/path')
# send POST request with form data
myHttpsFunction.post('/path').form( {foo: 'bar' })
เรียกใช้ฟังก์ชัน HTTPS Callable
เมื่อเรียกใช้ฟังก์ชัน HTTPS Callable ในเครื่อง คุณจะต้องให้ข้อมูลการทดสอบที่เหมาะสม
# invoke
myCallableFunction('test data')
myCallableFunction({'foo': 'bar'})
หรือคุณอาจส่ง Firebase-Instance-ID-token
เป็นพารามิเตอร์ที่ 2 นี่ต้องเป็นสตริง
# invoke with FCM registration token
myCallableFunction('test data', {instanceIdToken: 'sample token'})
การจำลอง context.auth
.auth ไม่พร้อมใช้งานในขณะนี้
เรียกใช้ฟังก์ชันฐานข้อมูลเรียลไทม์
เมื่อเรียกใช้ฟังก์ชัน Realtime Database ในเครื่อง คุณจะต้องให้ข้อมูลทดสอบที่เหมาะสม โดยทั่วไปหมายถึงการให้ข้อมูลทดสอบใหม่สำหรับการดำเนินการ onCreate
ข้อมูลเก่า/ลบสำหรับการดำเนินการ onDelete
และทั้งสองอย่างสำหรับ onUpdate
หรือ onWrite
:
# invoke onCreate function
myDatabaseFunction('new_data')
# invoke onDelete function
myDatabaseFunction('old_data')
# invoke onUpdate or onWrite function
myDatabaseFunction({before: 'old_data', after: 'new_data' })
นอกเหนือจากตัวเลือก before/after
เชลล์ยังมีตัวเลือก params
เพื่อใช้ในการจำลองสัญลักษณ์แทนในพาธ:
# mock wildcards in path, for example: if the path was input/{group}/{id}
myDatabaseFunction('data', {params: {group: 'a', id: 123}})
ตามค่าเริ่มต้น เชลล์จะเรียกใช้ฟังก์ชันฐานข้อมูลเรียลไทม์ด้วยสิทธิ์ของผู้ดูแลระบบ (บัญชีบริการ) ใช้ auth
เลือกการตรวจสอบสิทธิ์เพื่อเรียกใช้ฟังก์ชันแทนผู้ใช้ปลายทางโดยเฉพาะ หรือในฐานะผู้ใช้ที่ไม่ผ่านการตรวจสอบสิทธิ์:
# to mock unauthenticated user
myDatabaseFunction('data', {authMode: 'USER'})
# to mock end user
myDatabaseFunction('data', {auth: {uid: 'abcd'}})
เรียกใช้ฟังก์ชัน Firestore
เมื่อเรียกใช้ฟังก์ชัน Firestore ในเครื่อง คุณจะต้องให้ข้อมูลการทดสอบที่เหมาะสม โดยทั่วไปหมายถึงการให้ข้อมูลทดสอบใหม่สำหรับการดำเนินการ onCreate
ข้อมูลเก่า/ลบสำหรับการดำเนินการ onDelete
และทั้งสำหรับ onUpdate
หรือ onWrite
โปรดทราบว่าข้อมูล Firestore จะต้องเป็นคู่ของคีย์-ค่า ดู ประเภทข้อมูลที่รองรับ
# invoke onCreate function
myFirestoreFunction({foo: ‘new’})
# invoke onDelete function
myFirestoreFunction({foo: ‘old’})
# invoke onUpdate or onWrite function
myFirestoreFunction({before: {foo: ‘old’}, after: {foo: ‘new’} })
นอกจากฟิลด์ before/after
ของ data
object แล้ว คุณสามารถใช้ฟิลด์ params
บนอ็อบเจกต์ options
เพื่อจำลองสัญลักษณ์แทนในชื่อเอกสาร:
# mock wildcards in document name, for example: if the name was input/{group}/{id}
myFirestoreFunction({foo: ‘new’}, {params: {group: 'a', id: 123}})
เชลล์เรียกใช้ฟังก์ชัน Firestore ด้วยสิทธิ์ของผู้ดูแลระบบเสมอ ซึ่งหมายความว่าจะจำลองเหตุการณ์สร้าง/อัปเดต/ลบ ราวกับว่าทำโดยผู้ใช้ที่เป็นผู้ดูแลระบบ
เรียกใช้ฟังก์ชัน PubSub
สำหรับฟังก์ชัน PubSub ให้แทรกส่วนของข้อความในอินสแตนซ์ Buffer
และเพิ่มแอตทริบิวต์ข้อมูลตามที่แสดง:
// invokes a function with the JSON message { hello: 'world' } and attributes { foo: 'bar' }
myPubsubFunction({data: new Buffer('{"hello":"world"}'), attributes: {foo: 'bar'}})
เรียกใช้ฟังก์ชันการวิเคราะห์
คุณสามารถเรียกใช้ฟังก์ชัน Analytics โดยไม่มีข้อมูลใดๆ ได้โดยการเรียกใช้ myAnalyticsFunction()
ในเชลล์ ในการรันฟังก์ชันด้วยข้อมูลทดสอบ ขอแนะนำให้กำหนดตัวแปรสำหรับฟิลด์ข้อมูลเหตุการณ์เฉพาะที่ฟังก์ชันของคุณต้องการ:
var data = {
eventDim: [{
// populates event.data.params
params:{foo:'bar'},
// populates event.data.name
name: 'event_name',
// populates event.data.logTime, specify in microseconds
timestampMicros: Date.now() * 1000,
// populates event.data.previousLogTime, specify in microseconds
previousTimestampMicros: Date.now() * 1000,
// populates event.data.reportingDate, specify in 'YYYYMMDD' format
date: '20170930',
// populates event.data.valueInUSD
valueInUsd: 230
}],
userDim: userDim
};
myAnalyticsFunction(data);
เรียกใช้ฟังก์ชันการจัดเก็บและการตรวจสอบสิทธิ์
สำหรับฟังก์ชัน Storage และ Auth ให้เรียกใช้ฟังก์ชันในเครื่องด้วยข้อมูลทดสอบที่คุณต้องการดูภายในฟังก์ชัน ข้อมูลการทดสอบของคุณต้องเป็นไปตามรูปแบบข้อมูลที่เกี่ยวข้อง:
- สำหรับที่เก็บข้อมูลบนคลาวด์:
ObjectMetadata
- สำหรับการตรวจสอบ:
UserRecord
ระบุเฉพาะฟิลด์ที่โค้ดของคุณขึ้นอยู่กับ หรือไม่มีเลย หากคุณต้องการเรียกใช้ฟังก์ชันเท่านั้น