ฟังก์ชั่นการทดสอบแบบโต้ตอบ interactive

เชลล์ Cloud Functions มีเชลล์แบบโต้ตอบสำหรับการเรียกใช้ฟังก์ชันด้วยข้อมูลการทดสอบ เชลล์รองรับทริกเกอร์ทุกประเภท

ตั้งค่าข้อมูลประจำตัวของผู้ดูแลระบบ (ไม่บังคับ)

หากคุณต้องการการทดสอบฟังก์ชั่นของคุณโต้ตอบกับ Google APIs หรือ APIs Firebase อื่น ๆ ผ่านทาง Firebase SDK ผู้ดูแลระบบ คุณอาจจำเป็นต้องตั้งค่าข้อมูลประจำตัวของผู้ดูแลระบบ

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

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

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

ให้บริการฟังก์ชันโดยใช้เชลล์ Cloud Functions

เชลล์ Cloud Functions จำลองทริกเกอร์ฟังก์ชันทุกประเภทด้วยเชลล์แบบโต้ตอบสำหรับการเรียกใช้ฟังก์ชันด้วยข้อมูลทดสอบ ตัวเลือกแตกต่างกันไปตามประเภทของฟังก์ชัน แต่รูปแบบการใช้งานพื้นฐานคือ:

myFunctionName(data, options)

data พารามิเตอร์เป็นสิ่งจำเป็นสำหรับเรียลไทม์ฐานข้อมูลเมฆ FireStore และทริกเกอร์ PubSub และเป็นตัวเลือกสำหรับทุกประเภทฟังก์ชั่นอื่น ๆ นอกจากนี้ตัวเลือก options พารามิเตอร์จะใช้ได้เฉพาะสำหรับฐานข้อมูลเรียลไทม์และฟังก์ชั่นคลาวด์ FireStore

คุณสามารถโหลดข้อมูลทดสอบจากไฟล์ในเครื่องได้โดยการบันทึกไฟล์เป็นตัวแปรและเรียกใช้ฟังก์ชันด้วย:

var data = require('./path/to/testData.json');
myFunction(data);

ติดตั้งและกำหนดค่าเชลล์ Cloud Functions

หากต้องการใช้คุณลักษณะนี้ firebase-tools ต้องมีเวอร์ชันต่ำสุด 3.11.0 และ firebase-functions SDK ต้องมีเวอร์ชันต่ำสุด 0.6.2 การอัปเดตทั้งสองเรียกใช้คำสั่งต่อไปนี้ใน functions/ ไดเรกทอรีสำหรับโครงการของคุณ:

npm install --save firebase-functions@latest
npm install -g firebase-tools

หากคุณกำลังใช้ฟังก์ชั่นที่กำหนดเองการกำหนดค่าตัวแปรแรกเรียกใช้คำสั่งที่จะได้รับการตั้งค่าของคุณเอง (ทำงานนี้ภายใน functions directory) ในสภาพแวดล้อมในท้องถิ่นของคุณ:

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 เป็นพารามิเตอร์ที่สอง นี่ต้องเป็นสตริง

# invoke with FCM registration token
myCallableFunction('test data', {instanceIdToken: 'sample token'})

การแข่งขันของ context.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 วัตถุคุณสามารถใช้ 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 และ Crashlytics

สำหรับฟังก์ชัน Storage, Auth และ Crashlytics ให้เรียกใช้ฟังก์ชันในเครื่องด้วยข้อมูลการทดสอบที่คุณต้องการดูภายในฟังก์ชัน ข้อมูลการทดสอบของคุณต้องเป็นไปตามรูปแบบข้อมูลที่เกี่ยวข้อง:

  • สำหรับการจัดเก็บเมฆ: ObjectMetadata
  • สำหรับการตรวจสอบ: UserRecord
  • สำหรับ Crashlytics: Issue

ระบุเฉพาะฟิลด์ที่โค้ดของคุณขึ้นอยู่กับ หรือไม่มีเลย หากคุณต้องการเรียกใช้ฟังก์ชันเท่านั้น