وظائف الاختبار بشكل تفاعلي

يوفر غلاف وظائف السحابة غلافًا تفاعليًا لاستدعاء الوظائف مع بيانات الاختبار. يدعم الغلاف جميع أنواع الزناد.

إعداد بيانات اعتماد المسؤول (اختياري)

إذا كنت تريد ظائف الاختبارات الخاص للتفاعل مع جوجل واجهات برمجة التطبيقات أو غيرها من واجهات برمجة التطبيقات Firebase عبر Firebase مشرف SDK ، قد تحتاج إلى إعداد أوراق اعتماد المشرف.

  • سحابة Firestore والحقيقي مشغلات قاعدة البيانات لديها بالفعل أوراق اعتماد كافية، ولا تحتاج إلى إعداد إضافي.
  • تتطلب جميع واجهات برمجة التطبيقات الأخرى ، بما في ذلك واجهات Firebase API مثل المصادقة و FCM أو واجهات برمجة تطبيقات Google مثل Cloud Translation أو Cloud Speech ، خطوات الإعداد الموضحة في هذا القسم. وهذا ينطبق سواء كنت تستخدم وظائف قذيفة أو firebase emulators:start .

لإعداد بيانات اعتماد المسؤول للوظائف التي تمت مضاهاتها:

  1. فتح جزء حسابات خدمة وحدة التحكم سحابة جوجل.
  2. تأكد من أن يتم تحديد محرك التطبيقات حساب الخدمة الافتراضية، واستخدام قائمة الخيارات على اليمين لتحديد إنشاء مفتاح.
  3. عند المطالبة، حدد JSON لنوع المفتاح، ثم انقر فوق إنشاء.
  4. قم بتعيين بيانات اعتماد Google الافتراضية للإشارة إلى المفتاح الذي تم تنزيله:

    يونكس

    $ export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"
    
    $ firebase functions:shell
    

    شبابيك

    $ set GOOGLE_APPLICATION_CREDENTIALS=path\to\key.json
    
    $ firebase functions:shell
    

بعد الانتهاء من هذه الخطوات، يمكن ظائف الاختبارات الخاصة بك الوصول Firebase وجوجل واجهات برمجة التطبيقات باستخدام SDK الادارية . على سبيل المثال، عند اختبار على الزناد مصادقة، يمكن وظيفة يحتذى دعوة admin.auth().getUserByEmail(email) .

خدمة الوظائف باستخدام غلاف وظائف السحابة

يحاكي غلاف وظائف السحابة جميع أنواع مشغلات الوظائف مع غلاف تفاعلي لاستدعاء الوظائف ببيانات الاختبار. تختلف الخيارات حسب نوع الوظيفة ، لكن تنسيق الاستخدام الأساسي هو:

myFunctionName(data, options)

و data مطلوب معلمة لقاعدة بيانات في الوقت الحقيقي، سحابة Firestore، ومشغلات PubSub في، واختياري لجميع أنواع وظيفة أخرى. أيضا، واختياري options المعلمة صالحة فقط لقاعدة بيانات في الوقت الحقيقي وظائف سحابة Firestore.

اختياريًا ، يمكنك تحميل بيانات الاختبار من ملف محلي عن طريق حفظ الملف كمتغير واستدعاء دالة معه:

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

قم بتثبيت وتكوين غلاف وظائف السحابة

لاستخدام هذه الميزة، firebase-tools يجب أن يكون الحد الأدنى للنسخة 3.11.0، و firebase-functions SDK يجب أن يكون الحد الأدنى للنسخة 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

أخيرًا ، قم بتشغيل shell باستخدام الأمر التالي:

firebase functions:shell

استدعاء وظائف HTTPS

لوظائف استحضار HTTPS في وعاء، واستخدام هو نفس request وحدة الآلية الوقائية الوطنية، ولكن محل 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 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

عند تشغيل وظائف 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}})

بشكل افتراضي ، يقوم shell بتشغيل وظائف Realtime Database بامتيازات المسؤول (حساب الخدمة). استخدام 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}})

تقوم shell دائمًا بتشغيل وظائف 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'}})

استدعاء وظائف التحليلات

يمكنك استدعاء وظيفة تحليلات دون أي بيانات عن طريق تشغيل 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);

استدعاء وظائف التخزين والمصادقة و Crashlytics

بالنسبة لوظائف التخزين والمصادقة و Crashlytics ، قم باستدعاء الوظيفة المحلية مع بيانات الاختبار التي ترغب في رؤيتها داخل الوظيفة. يجب أن تتبع بيانات الاختبار الخاصة بك تنسيقات البيانات المقابلة:

حدد الحقول التي تعتمد عليها التعليمات البرمجية فقط ، أو لا تحدد الحقول على الإطلاق إذا كنت تريد تشغيل الوظيفة فقط.