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

Kiểm tra các chức năng một cách tương tác

Vỏ Chức năng đám mây cung cấp một trình bao tương tác để gọi các chức năng với dữ liệu thử nghiệm. Vỏ hỗ trợ tất cả các loại kích hoạt.

Thiết lập thông tin đăng nhập quản trị viên (tùy chọn)

Nếu bạn muốn kiểm tra chức năng của bạn để tương tác với Google API hoặc các API căn cứ hỏa lực khác thông qua các căn cứ hỏa lực SDK quản trị , bạn có thể cần phải thiết lập thông tin quản trị.

  • Đám mây FireStore và Realtime trigger Cơ sở dữ liệu đã có đủ thông tin, và không đòi hỏi cài đặt bổ sung.
  • Tất cả các API khác, bao gồm các API Firebase như Xác thực và FCM hoặc các API của Google như Dịch thuật đám mây hoặc Giọng nói trên đám mây, yêu cầu các bước thiết lập được mô tả trong phần này. Điều này áp dụng cho dù bạn đang sử dụng các chức năng bao hoặc firebase emulators:start .

Để thiết lập thông tin đăng nhập quản trị viên cho các chức năng được mô phỏng:

  1. Mở panel Accounts Dịch vụ của Google Cloud Console.
  2. Hãy chắc chắn rằng App Engine tài khoản dịch vụ mặc định được chọn, và sử dụng menu tùy chọn ở bên phải để chọn Tạo chủ chốt.
  3. Khi được nhắc, chọn JSON cho các loại chìa khóa, và nhấp vào Tạo.
  4. Đặt thông tin đăng nhập mặc định của Google của bạn để trỏ đến khóa đã tải xuống:

    Unix

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

    các cửa sổ

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

Sau khi hoàn thành các bước này, kiểm tra chức năng của bạn có thể truy cập vào căn cứ hỏa lực và Google API bằng cách sử dụng SDK quản trị . Ví dụ, khi kiểm tra một kích hoạt xác thực, chức năng mô phỏng có thể gọi admin.auth().getUserByEmail(email) .

Cung cấp các chức năng bằng cách sử dụng vỏ Chức năng đám mây

Trình bao Chức năng đám mây mô phỏng tất cả các loại trình kích hoạt chức năng với một trình bao tương tác để gọi các chức năng với dữ liệu thử nghiệm. Các tùy chọn khác nhau tùy theo loại chức năng, nhưng định dạng sử dụng cơ bản là:

myFunctionName(data, options)

Các data tham số là cần thiết cho cơ sở dữ liệu thời gian thực, Cloud FireStore, và trigger PubSub, và tùy chọn cho tất cả các loại chức năng khác. Ngoài ra, các tùy chọn options tham số chỉ có giá trị đối với cơ sở dữ liệu thời gian thực và các chức năng của Cloud FireStore.

Theo tùy chọn, bạn có thể tải dữ liệu thử nghiệm từ một tệp cục bộ bằng cách lưu tệp dưới dạng một biến và gọi một hàm với nó:

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

Cài đặt và định cấu hình shell Chức năng đám mây

Để sử dụng tính năng này, firebase-tools phải có phiên bản tối thiểu 3.11.0, và firebase-functions SDK phải có phiên bản tối thiểu 0.6.2. Để cập nhật cả hai, chạy các lệnh sau trong functions/ thư mục cho dự án của bạn:

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

Nếu bạn đang sử dụng các chức năng tùy chỉnh các biến cấu hình, đầu tiên hãy chạy lệnh để có được cấu hình tùy chỉnh của bạn (chạy này trong functions thư mục) trong môi trường địa phương của bạn:

firebase functions:config:get > .runtimeconfig.json
# If using Windows PowerShell, replace the above with:
# firebase functions:config:get | ac .runtimeconfig.json

Cuối cùng, chạy trình bao bằng lệnh sau:

firebase functions:shell

Gọi các chức năng HTTPS

Đối với cách gọi HTTPS chức năng trong vỏ, sử dụng cũng giống như các request mô-đun NPM, nhưng thay thế request với tên của hàm bạn muốn noi theo. Ví dụ:

# 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' })

Gọi các chức năng có thể gọi HTTPS

Khi gọi cục bộ các hàm HTTPS Callable, bạn sẽ cần cung cấp dữ liệu thử nghiệm thích hợp.

# invoke
myCallableFunction('test data')
myCallableFunction({'foo': 'bar'})

Tùy chọn, bạn có thể vượt qua trong một Firebase-Instance-ID-token như tham số thứ hai. Đây phải là một chuỗi.

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

Thi đua của context.auth hiện chưa có.

Gọi các chức năng Cơ sở dữ liệu thời gian thực

Khi chạy cục bộ các chức năng Cơ sở dữ liệu thời gian thực, bạn sẽ cần cung cấp dữ liệu thử nghiệm thích hợp. Điều này thường có nghĩa là cung cấp dữ liệu thử nghiệm mới cho onCreate hoạt động, dữ liệu cũ / gỡ bỏ cho onDelete hoạt động, và cả hai cho onUpdate hoặc onWrite chức năng:

# invoke onCreate function
myDatabaseFunction('new_data')

# invoke onDelete function
myDatabaseFunction('old_data')

# invoke onUpdate or onWrite function
myDatabaseFunction({before: 'old_data', after: 'new_data' })

Ngoài các before/after tùy chọn, vỏ cung cấp các params tùy chọn để sử dụng trong chế giễu ký tự đại diện trong một đường dẫn:

# mock wildcards in path, for example: if the path was input/{group}/{id}
myDatabaseFunction('data', {params: {group: 'a', id: 123}})

Theo mặc định, trình bao chạy các chức năng Cơ sở dữ liệu thời gian thực với các đặc quyền của quản trị viên (tài khoản dịch vụ). Sử dụng auth tùy chọn chức năng thay vì chạy như một người dùng cuối cụ thể, hoặc như một người dùng không được thẩm định:

# to mock unauthenticated user
myDatabaseFunction('data', {authMode: 'USER'})
# to mock end user
myDatabaseFunction('data', {auth: {uid: 'abcd'}})

Gọi các hàm Firestore

Khi chạy các chức năng Firestore cục bộ, bạn sẽ cần cung cấp dữ liệu thử nghiệm thích hợp. Điều này thường có nghĩa là cung cấp dữ liệu thử nghiệm mới cho onCreate hoạt động, dữ liệu cũ / gỡ bỏ cho onDelete hoạt động, và cả hai cho onUpdate hoặc onWrite chức năng. Lưu ý rằng dữ liệu Firestore phải là các cặp khóa-giá trị; thấy được hỗ trợ loại dữ liệu .

# invoke onCreate function
myFirestoreFunction({foo: ‘new’})

# invoke onDelete function
myFirestoreFunction({foo: ‘old’})

# invoke onUpdate or onWrite function
myFirestoreFunction({before: {foo: ‘old’}, after: {foo: ‘new’} })

Ngoài các before/after các lĩnh vực của data đối tượng, bạn có thể sử dụng params lĩnh vực trên options đối tượng để các kí hiệu giả trong một tên tài liệu:

# mock wildcards in document name, for example: if the name was input/{group}/{id}
myFirestoreFunction({foo: ‘new’}, {params: {group: 'a', id: 123}})

Shell luôn chạy các chức năng Firestore với các đặc quyền quản trị, có nghĩa là nó chế nhạo một sự kiện tạo / cập nhật / xóa như thể nó được thực hiện bởi một người dùng quản trị.

Gọi các hàm PubSub

Đối với chức năng PubSub, chèn trọng tải thông điệp của bạn trong một Buffer dụ và thêm tùy chọn thuộc tính dữ liệu như:

// invokes a function with the JSON message { hello: 'world' } and attributes { foo: 'bar' }
myPubsubFunction({data: new Buffer('{"hello":"world"}'), attributes: {foo: 'bar'}})

Gọi các chức năng Analytics

Bạn có thể gọi một chức năng Analytics mà không cần bất kỳ dữ liệu bằng cách chạy myAnalyticsFunction() trong vỏ. Để chạy hàm với dữ liệu thử nghiệm, bạn nên xác định một biến cho các trường dữ liệu sự kiện cụ thể mà hàm của bạn cần:

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);

Gọi các chức năng Lưu trữ và Xác thực

Đối với các hàm Storage và Auth, hãy gọi hàm local với dữ liệu kiểm tra mà bạn muốn xem bên trong hàm. Dữ liệu thử nghiệm của bạn phải tuân theo các định dạng dữ liệu tương ứng:

Chỉ chỉ định các trường mà mã của bạn phụ thuộc vào hoặc không có trường nào nếu bạn chỉ muốn chạy hàm.