Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to test a Firebase trigger locally?

Using firebase-functions with Node and exports.foo = functions.database.ref('/object').onWrite(event => {});.

I can deploy to the cloud and test just fine ... and I can easily test http-type functions locally using firebase serve --only functions.

However, I don't see a way to test triggers locally. Is it possible? How?

like image 508
Matt H Avatar asked Oct 06 '17 22:10

Matt H


2 Answers

This in now possible. I finally find this clear medium post which explain how do it : https://medium.com/@moki298/test-your-firebase-cloud-functions-locally-using-cloud-functions-shell-32c821f8a5ce

To run a trigger locally, use the "functions shell" tool :

1 - My code for firestore (the medium post use RealTime Database) :

exports.testTrigger = functions.firestore
.document('messages/{messageId}')
.onCreate((snapshot, context) => {
    let message = snapshot.data()
    return snapshot.ref.set({
        ...message,
        status : 'sent' 
    })
})

2 - I run the firebase shell functions in the terminal

firebase functions:shell

3 - I call my "testTrigger" cloud function trigger with data in parameter

testTrigger({text:"hello"})

4- My firestore database has a new "message" updated by my trigger

like image 167
Damien Romito Avatar answered Sep 28 '22 17:09

Damien Romito


Since May 21st 2020 it's now possible to test triggers locally!

See release blog post https://firebase.googleblog.com/2020/05/local-firebase-emulator-ui.html

Always good to also take a look at the release notes https://firebase.google.com/support/releases#may_21_2020

And note that 8.4 requires Node 10, as discussed in question Update of Firebase CLI to 8.4.0 gives errors about "Unsupported engine" saying '{"node":">=10"}'

like image 25
Simon B. Avatar answered Sep 28 '22 17:09

Simon B.