0
0
FirebaseHow-ToBeginner · 4 min read

How to Test Firebase Functions Locally with Emulator

To test Firebase Functions locally, use the Firebase Emulator Suite by running firebase emulators:start --only functions. This lets you invoke your functions on your computer without deploying them to the cloud.
📐

Syntax

The main command to start local testing is firebase emulators:start --only functions. This runs the Functions emulator only. You can also add other emulators like Firestore or Auth by listing them after --only.

Inside your function code, you can call your functions locally using HTTP requests or the Firebase CLI.

bash
firebase emulators:start --only functions
💻

Example

This example shows a simple HTTP Firebase Function and how to test it locally using the emulator.

javascript
const functions = require('firebase-functions');
const express = require('express');
const app = express();

app.get('/hello', (req, res) => {
  res.send('Hello from Firebase!');
});

exports.api = functions.https.onRequest(app);
Output
When you run `firebase emulators:start --only functions` and visit http://localhost:5001/YOUR_PROJECT_ID/us-central1/api/hello in your browser, you will see: Hello from Firebase!
⚠️

Common Pitfalls

  • Not installing the Firebase CLI or using an outdated version can cause errors.
  • Forgetting to run firebase init functions before testing will leave your project unprepared.
  • Trying to test functions that depend on other Firebase services without starting their emulators can cause failures.
  • Using the wrong URL or port to call your local function will not work; check the emulator logs for the correct address.
javascript
/* Wrong way: calling deployed URL instead of local emulator */
// fetch('https://us-central1-yourproject.cloudfunctions.net/api/hello')

/* Right way: call local emulator URL */
// fetch('http://localhost:5001/yourproject/us-central1/api/hello')
📊

Quick Reference

Remember these key commands and tips for local testing:

  • firebase emulators:start --only functions - start functions emulator
  • Use firebase init functions to set up your project
  • Call functions locally via http://localhost:5001/PROJECT_ID/REGION/FUNCTION_NAME
  • Start other emulators if your functions use Firestore, Auth, etc.

Key Takeaways

Use the Firebase Emulator Suite to test functions locally without deploying.
Run 'firebase emulators:start --only functions' to start the local functions server.
Call your local functions using the localhost URL shown in the emulator logs.
Initialize your project with 'firebase init functions' before testing.
Start other emulators if your functions depend on other Firebase services.