Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

347
Vistas
¿Cómo llamar a las funciones de Firebase desde una prueba de unidad usando Firebase Emulators?

Tengo los emuladores de Firebase funcionando.

Mi aplicación puede llamar a una función de nube de Firebase que puede crear un reclamo de usuario personalizado si el usuario tiene permiso para hacerlo (dependiendo de un valor en la base de datos)

Estoy tratando de invocar esa función:

 import * as firebase from '@firebase/testing'; import * as fs from 'fs'; const app = firebase.initializeTestApp({ databaseName: 'mydb', auth: { uid: 'useruid' }, }); describe('Firebase Functions', () => { beforeEach(async () => { await firebase.loadDatabaseRules({ databaseName: 'mydb', rules: fs.readFileSync('database.rules.json', 'utf8'), }); }); afterAll(async () => { await Promise.all(firebase.apps().map((app) => app.delete())); }); const cloudfunction = app.functions().httpsCallable('cloudfunction') it('throws error if user is not authenticated', async () => { await firebase.assertFail(cloudfunction()) }) });

Esto está arrojando un error:

Error: Error: la respuesta para la verificación previa tiene un código de estado HTTP 404 no válido

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

En mi opinión, no necesita llamar a firebase desde su prueba de unidad, porque no es su negocio si firebase funciona correctamente o no, necesita probar su lógica comercial, lo que significa que se burlará del método que llama al firebase y pruebe los valores de devolución esperados de este método, por ejemplo, puede escribir 2 casos en los que la notificación se enviará sin error y segundo si el servicio de firebase devolverá una falla, para esos 2 casos, su código debería tener un comportamiento apropiado. El equipo que trabaja en Firebase realizará las pruebas del servicio Firebase.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Existe firebase-functions-test para esto. Esto le permite envolver sus funciones en la nube y llamarlas directamente, así como crear stubs para actualizaciones de documentos. Cuando se ejecuta en el contexto del emulador, el SDK de firebase-admin aún interactúa con el emulador. Una configuración básica podría parecerse a la siguiente (suponiendo texto mecanografiado):

 // functions/src/test/functions.test.ts import {expect} from "chai"; import "mocha"; import firebaseFunctionTest from "firebase-functions-test"; import * as cf from "../index"; const projectId = "demo-project"; const test = firebaseFunctionTest({ projectId, }); after(() => test.cleanup()); describe("cloud functions", () => { afterEach(async () => { await test.firestore.clearFirestoreData(projectId); }); describe("myFunction", () => { const myFunction = test.wrap(cf.myFunction); // Create mock data with the admin SDK and test function. } }

En su package.json puede poner un script como.

 "scripts": { "test:unit": "mocha -r ts-node/register --timeout 5000 --exit src/**/*.test.ts", "test": "npm run build && npx firebase -P demo-project emulators:exec 'npm run test:unit'", ... }

También puede consultar https://github.com/firebase/quickstart-testing/tree/master/unit-test-cloud-functions y https://firebase.google.com/docs/functions/unit -prueba .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda