es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error al importar firebase-functions-test al realizar pruebas con mocha.

Estoy tratando de configurar un repositorio de Firebase Cloud Functions para ejecutar pruebas mocha. Sin embargo, arroja el siguiente error cuando uso import * as firebase from "firebase-functions-test"; o const firebase = require("firebase-functions-test")();. Puedes ver en mi código que ni siquiera he llamado a las funciones reales de Firebase todavía, por lo que creo que este es un problema de configuración.

Pregunta : ¿Qué cambio debo hacer para que las pruebas mocha se ejecuten para las pruebas de Firebase Functions usando la sintaxis de importación?

Código de prueba funcional
“ `
import {assert} from ” chai “;
describe (” Sanity Check & quot ;, () => {
it (” debería aprobar & quot ;, () => {
assert.equal (0, 0);
});
});

< p>
Código de prueba fallido usando ** require **

const test = require (” firebase-functions-test & quot;) ();
import {assert} from ” chai “;
describe (” Sanity Check & quot ;, () => {
it (” debería aprobar & quot ;, () => {
assert.equal (0, 0);
test.cleanup ();
});
});

Código fallido usando ** import **

import * as firebase from ” firebase-functions-test “;
import {assert} from ” chai “;

const test = firebase ();
describe (” Sanity Check & quot ;, () => {
it (” debería aprobar & quot ;, () => {
assert.equal (0, 0);
test.cleanup ();
});
});

Error de fallo

funciones @ test / Users / cupidchan / temp / funciones
mocha -r ts-node / register test / *. spec.ts

Error [ERR_PAQUETE_NO_EXPORTADO]: La subruta del paquete & # 39; . / lib / encoder & # 39; no está definido por “exportaciones” en / Users / cupidchan / temp / funciones / node_modules / firebase-functions / package.json
en el nuevo NodeError (errores internos.js: 322: 7)
en throwExportsNotFound (resolución de módulos / esm / resolver.js: 322: 9)
en packageExportsResolve (resolución de módulos / esm / resolver.js: 545: 3)
en resolverExportaciones (cargador.js / cjs / interno: 450: 36)
en Function.Module. findPath (cargador.js / cjs / interno: 490: 31)
en Function.Module. resolveFilename (cargador.js / cjs / interno: 888: 27)
en la función Module.load (cargador.js / cjs / interno: 746: 27)
en Module.require (cargador.js / cjs / interno: 974: 19)
en require (ayudantes.js / cjs / interno: 93: 18)
en el objeto. (/Users/cupidchan/temp/functions/node_modules/firebase-functions-test/lib/providers/firestore.js:26:19)
en la Module. compile (cargador.js / cjs / interno: 1085: 14)
en el objeto Module.extensions..js (cargador.js / cjs / interno: 1114: 10)
en la carga del módulo (cargador.js / cjs / interno: 950: 32)
en Function.Module. load (cargador.js / cjs / interno: 790: 12)
en él objeto. (/Users/cupidchan/temp/functions/node_modules/firebase-functions-test/lib/features.js:9:19)
en la Module. compile (cargador.js / cjs / interno: 1085: 14)
en el objeto Module.extensions..js (cargador.js / cjs / interno: 1114: 10)
en la carga del módulo (cargador.js / cjs / interno: 950: 32)
en Function.Module. load (cargador.js / cjs / interno: 790: 12)
en Module.require (cargador.js / cjs / interno: 974: 19)
en require (interior / módulos / cjs / ayudantes.js: 93: 18)
en el objeto.exports (/Users/cupidchan/temp/functions/node_modules/firebase-functions-test/lib/index.js:30:20)
en el objeto. (/Users/cupidchan/temp/functions/test/index.spec.ts:9:14)
en la Module. compile (cargador.js / cjs / interno: 1085: 14)
en él objeto m. compile (/Users/cupidchan/temp/functions/node_modules/ts-node/src/index.ts: 1371: 23)
en objeto. extensions..js (cargador.js / cjs / interno: 1114: 10)
en Object.require.extensions.& lt;computed> [como .ts] (/Users/cupidchan/temp/functions/node_modules/ts-node/src/index.ts:1374:12)
en la carga del módulo (cargador.js / cjs / interno: 950: 32)
en Function.Module. load (cargador.js / cjs / interno: 790: 12)
en Module.require (cargador.js / cjs / interno: 974: 19)
en require (ayudantes.js / cjs / interno: 93: 18)
en el objeto.exports.requireOrImport (/Users/cupidchan/temp/functions/node_modules/mocha/lib/nodejs/esm-utils.js:56:20)
en objeto. exports.loadFilesAsync (/Users/cupidchan/temp/functions/node_modules/mocha/lib/nodejs/esm-utils.js:88:20)
en objeto asincrónico único (/Users/cupidchan/temp/functions/node_modules/mocha/lib/cli/run-helpers.js:125:3)
en el objeto.exports.handler (/Users/cupidchan/temp/functions/node_modules/mocha/lib/cli/run.js:374:5)
nuevo ERR_TEST Failed. Ver arriba para más detalles.

** package.json **

{
“name”: “functions”,
“scripts”: {
“lint”: “eslint –ext .js,.ts .”,
“build”: “tsc”,
“serve”: “npm run build && firebase emulators:start –only functions”,
“shell”: “npm run build && firebase functions:shell”,
“start”: “npm run shell”,
“deploy”: “firebase deploy –only functions”,
“logs”: “firebase functions:log”,
“test”: “mocha -r ts-node/register test/*/.spec.ts –reporter spec”
},
“engines”: {
“node”: “14”
},
“main”: “lib/index.js”,
“dependencies”: {
“firebase-admin”: “^9.8.0”,
“firebase-functions”: “^3.14.1”
},
“devDependencies”: {
“@types/chai”: “^4.2.22”,
“@types/mocha”: “^9.0.0”,
“@types/node”: “^16.11.11”,
“@typescript-eslint/eslint-plugin”: “^3.9

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para solucionar el problema de ejecutar pruebas de mocha para las pruebas de Firebase Functions utilizando la sintaxis de importación, es necesario cambiar la declaración de importación en su archivo de prueba por:

    import * as test from 'firebase-functions-test'

    Este cambio es necesario porque la biblioteca “firebase-functions-test” exporta un objeto predeterminado que no funciona con la declaración de importación que está intentando utilizar.

    Una vez que realice esta actualización, su archivo de prueba debe verse así:

    import { assert } from "chai";
    import * as test from 'firebase-functions-test';
    
    describe("Sanity Check", () => {
      it("should pass", () => {
        assert.equal(0, 0);
        test().cleanup();
      });
    });
    

    Esto debería resolver el problema que está enfrentando y permitirle ejecutar sus pruebas de mocha para las pruebas de Firebase Functions utilizando la sintaxis de importación.

Comments are closed.