توفر واجهة أوامر Cloud Functions واجهة برمجة تطبيقات تفاعلية للاستدعاء. الدوال مع بيانات الاختبار. تتوافق واجهة الأوامر مع جميع أنواع العوامل المشغِّلة.
إعداد بيانات اعتماد المشرف (اختياري)
إذا كنت تريد تفاعل اختبارات الدوال مع Google APIs أو منصة Firebase الأخرى واجهات برمجة التطبيقات عبر SDK لمشرف Firebase، قد تحتاج إلى إعداد بيانات اعتماد المشرف.
- تحتوي المُشغِّلات Cloud Firestore وRealtime Database على بيانات اعتماد كافية، ولا تتطلبان إعدادًا إضافيًا.
- أما جميع واجهات برمجة التطبيقات الأخرى، بما في ذلك واجهات برمجة تطبيقات Firebase، مثل Authentication وFCM، أو Google APIs، مثل Cloud Translation أو Cloud Speech، فتتطلب خطوات الإعداد الموضّحة في هذا القسم. ينطبق ذلك سواء كنت تستخدم واجهة Cloud Functions أو
firebase emulators:start
.
لإعداد بيانات اعتماد المشرف للدوال التي تتم محاكاتها:
- افتح جزء حسابات الخدمة من وحدة التحكم Google Cloud.
- تأكَّد من اختيار حساب الخدمة التلقائي App Engine واستخدامه. قائمة الخيارات على يسار الشاشة لاختيار إنشاء مفتاح.
- اختَر JSON لنوع المفتاح وانقر على إنشاء عندما يُطلب منك ذلك.
اضبط بيانات اعتماد 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 للمشرف. على سبيل المثال، عند إجراء اختبار
مشغل Authentication، فإن الدالة التي تتم محاكاتها يمكن أن تستدعي
admin.auth().getUserByEmail(email)
عرض الدوال باستخدام واجهة أوامر Cloud Functions
تحاكي دوال السحابة جميع أنواع مشغلات الدوال باستخدام واجهة برمجة تطبيقات تفاعلية لاستدعاء الدوال ببيانات الاختبار. تختلف الخيارات حسب نوع الدالة، ولكن تنسيق الاستخدام الأساسي هو:
myFunctionName(data, options)
يجب إدخال المعلمة data
لقاعدة بيانات Realtime، Cloud Firestore،
وPubSub، وهي اختيارية لجميع أنواع الدوال الأخرى.
كذلك، معلَمة options
الاختيارية صالحة فقط لقاعدة البيانات في الوقت الفعلي
وCloud Firestore.
اختياريًا، يمكنك تحميل بيانات الاختبار من دليل عن طريق حفظ الملف كمتغير واستدعاء دالة به:
var data = require('./path/to/testData.json');
myFunction(data);
تثبيت واجهة الأوامر في Cloud Functions وإعدادها
لاستخدام هذه الميزة، يجب أن يتوفر لدى firebase-tools
الإصدار 3.11.0 كحد أدنى، بالإضافة إلى
يجب أن يتوفر الإصدار 0.6.2 من حزمة تطوير البرامج (SDK) firebase-functions
كحد أدنى. لتحديث كليهما،
شغِّل الأوامر التالية في دليل 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
أخيرًا، شغّل Shell باستخدام الأمر التالي:
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 القابلة للاستدعاء
عند استدعاء دوال HTTPS القابلة للاستدعاء محليًا، ستحتاج إلى توفير بيانات اختبار مناسبة.
# invoke
myCallableFunction('test data')
myCallableFunction({'foo': 'bar'})
ويمكنك اختياريًا تمرير Firebase-Instance-ID-token
كمَعلمة ثانية. ويجب أن تكون سلسلة.
# invoke with FCM registration token
myCallableFunction('test data', {instanceIdToken: 'sample token'})
محاكاة context.auth
غير متاحة حاليًا.
استدعاء دوال قاعدة بيانات الوقت الفعلي
عند تشغيل دوال قاعدة البيانات في الوقت الفعلي محليًا، ستحتاج إلى تقديم
بيانات الاختبار المناسبة. يعني هذا بشكل عام توفير بيانات اختبار جديدة
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'}})
استدعاء وظائف "إحصاءات Google"
يمكنك استدعاء دالة Analytics بدون أي بيانات عن طريق
تشغيل myAnalyticsFunction()
في واجهة الأوامر.
لتشغيل الدالة باستخدام بيانات الاختبار، يوصى بتحديد متغير
حقول بيانات الأحداث المحددة التي تحتاج إليها دالتك:
var data = {
eventDim: [{
// populates event.data.params
params: {foo: {stringValue: 'bar'} },
// Also valid:
// {intValue: '10'}, {floatValue: '1.0'}, {doubleValue: '1.0'}
// 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);
استدعاء وظيفتي التخزين والمصادقة
بالنسبة إلى وظيفتي التخزين والمصادقة، يمكنك استدعاء الدالة المحلية مع اختبار البيانات التي تريد رؤيتها داخل الدالة. يجب أن تكون بيانات الاختبار اتبع تنسيقات البيانات المقابلة:
- بالنسبة إلى Cloud Storage:
ObjectMetadata
- بالنسبة إلى Authentication:
UserRecord
حدِّد فقط الحقول التي تعتمد عليها الرمز، أو لا تحدِّد "لا شيء" على الإطلاق إذا كنت فقط نريد تشغيل الدالة.