Catch up on everything we announced at this year's Firebase Summit. Learn more

عملکردهای تعاملی را امتحان کنید

پوسته توابع ابری یک پوسته تعاملی برای فراخوانی توابع با داده های آزمایشی فراهم می کند. پوسته از همه انواع ماشه پشتیبانی می کند.

تنظیم اعتبار مدیریت (اختیاری)

اگر می خواهید تست توابع خود را به تعامل با Google API های دیگر رابط های برنامه کاربردی فایربیس از طریق فایربیس محیط مدیریت SDK ، شما ممکن است نیاز به راه اندازی اعتبار مدیریت.

  • ابر Firestore و بیدرنگ محرک پایگاه در حال حاضر اختیارات کافی، و انجام تنظیمات اضافی نیاز ندارد.
  • همه APIهای دیگر، از جمله APIهای Firebase مانند Authentication و FCM یا APIهای 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);

پوسته 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 دایرکتوری) در محیط محلی خود قرار دهید:

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 را فراخوانی کنید

هنگام فراخوانی توابع قابل فراخوانی 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 حال حاضر در دسترس است.

فراخوانی توابع پایگاه داده بیدرنگ

هنگام اجرای توابع پایگاه داده Realtime به صورت محلی، باید داده های آزمایشی مناسب را ارائه دهید. این معمولا بدین معنی ارائه داده ها از آزمون جدید برای 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، درج payload پیام خود را در یک 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 را فراخوانی کنید

برای توابع Storage و Auth، تابع محلی را با داده های آزمایشی که می خواهید در داخل تابع ببینید، فراخوانی کنید. داده های آزمایشی شما باید از فرمت های داده مربوطه پیروی کنند:

فقط فیلدهایی را مشخص کنید که کد شما به آنها وابسته است یا اگر فقط می خواهید تابع را اجرا کنید، هیچ کدام را مشخص نکنید.