Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

144
Visualizações
testEnv.firestore.makeDocumentSnapshot (datos, ruta) no está creando un nuevo documento

Configuración de las funciones de firebase de pruebas unitarias (modo en línea).

Estoy probando una función onCreate(), por lo que necesito crear un documento en firestore para asegurarme de que la función se active y funcione correctamente. El problema que encuentro es que testEnv.firestore.makeDocumentSnapshot(data, path) no está creando un nuevo documento. Si el documento ya existe, puedo escribirle estos datos y activar la función onCreate(), pero si no existe obtengo un Error: 5 NOT_FOUND: No document to update cuando ejecuto la prueba.

prueba.ts

 const functions = require("firebase-functions-test"); const testEnv = functions({ databaseURL: "https://***.firebaseio.com", storageBucket: "***.appspot.com", projectId: "***", }, "./test-service-account.json"); import "jest"; import * as admin from "firebase-admin"; import { makeLowerCase } from "../src"; describe("makes bio lower case", () => { let wrapped: any; beforeAll(() => { wrapped = testEnv.wrap(makeLowerCase); }); test("it converts the bio to lowercase", async () => { const path = "/animals/giraffe"; const data = {bio: "GIRAFFE"}; const snap = testEnv.firestore.makeDocumentSnapshot(data, path); await wrapped(snap) const after = await admin.firestore().doc(path).get(); expect(after?.data()?.bio).toBe("giraffe"); }); });

hacerLowerCase.ts

 import * as functions from "firebase-functions"; import * as admin from "firebase-admin"; export const makeLowerCase = functions.firestore .document("animals/{animalId}") .onCreate((snap, context) => { const data = snap.data(); const bio = data.bio.toLowerCase(); return admin.firestore().doc(`animals/${snap.id}`).update({bio}); });

Puedo arreglar esto en makeLowerCase.ts devolviendo:

 admin.firestore().doc(`animals/${snap.id}`).set({bio}, {merge: true});

O creando el documento con admin en la prueba:

 await admin.firestore().doc(path).set(data);

Pero testEnv.firestore.makeDocumentSnapshot(data, path); debería estar creando un documento, creo, ¿no?

¿Es este un error o un comportamiento esperado de firebase-functions-test" ?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

makeDocumentSnapshot(data, path) no creará un documento real, solo falsifica un objeto QueryDocumentSnapshot sin interactuar con ninguna base de datos real; piense en ello como "hacer un objeto DocumentSnapshot".

Si bien su Cloud Function puede asumir correctamente que el documento existe porque así es como se activa, tendría que escribir un documento en la base de datos para que actúe si desea seguir usando update(...) en su lugar. de set(..., { merge: true }) .

Por lo tanto, deberá agregar al menos:

 await admin.firestore().doc(path).set(data);

y luego puedes usar cualquiera de estos:

 const snap = testEnv.firestore.makeDocumentSnapshot(data, path); // OR const snap = await admin.firestore().doc(path).get();
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda