【问题标题】:firebase.config() is empty during integration testsfirebase.config() 在集成测试期间为空
【发布时间】:2020-11-19 20:34:17
【问题描述】:

我正在使用在线模式(推荐)为我的 Firebase Cloud Functions 编写测试。我希望我的测试代码从functions.config() 获取实际值,而不是模拟的。这是我的代码:

import * as admin from "firebase-admin";
import * as functions from "firebase-functions";
import * as testFn from "firebase-functions-test";

let firebaseTest: any;

const projectConfig = {
  databaseURL: "https://hidden.firebaseio.com",
  storageBucket: "hidden.appspot.com",
  projectId: "hidden",
};

beforeAll((done) => {
  firebaseTest = testFn(projectConfig, "./hidden-adminsdk.json");
  admin.initializeApp()
  done();
});

afterAll(async () => {
  firebaseTest.cleanup();
  await admin.app().delete();
});

test("firebase.config().stripe.secret_key should return actual key", async () => {
  expect(functions.config()).toBeDefined();
  expect(functions.config().stripe).toBeDefined();
});

输出是:

    expect(received).toBeDefined()

    Received: undefined

      24 | test("firebase.config().stripe.secret_key should return actual key", async () => {
      25 |   expect(functions.config()).toBeDefined();
    > 26 |   expect(functions.config().stripe).toBeDefined();
         |                                     ^
      27 | });

  console.warn node_modules/firebase-functions/lib/logger.js:12
    {"severity":"WARNING","message":"Warning, FIREBASE_CONFIG and GCLOUD_PROJECT environment variables are missing. Initializing firebase-admin will fail"}

使用相同的环境,当我在云函数中运行我的应用程序或使用 Firebase CLI 时,这些配置值就会出现。 我不想使用this method 模拟我的functions.config() 我想在测试环境中编写集成测试。

【问题讨论】:

  • 您找到解决方案了吗?我正在努力解决类似的问题。
  • 还没有解决方案,我的解决方法是使用mockConfig 并从firebase functions:config:get 复制粘贴我的所有配置。这很糟糕,因为我所有的私钥都嵌入在代码中。我这样做只是因为这是一个测试环境,并且 repo 是私有的。

标签: javascript firebase google-cloud-functions


【解决方案1】:

我知道我参加聚会有点晚了,但这里是解决方案:

firebase functions:config:get > .runtimeconfig.json 

下面的几个链接描述了什么是什么以及为什么:

显然,在测试期间,firebase 并没有接触到函数本身。所以必须有一个本地实例。如果您使用上面提供的名称 - 它将自动添加到测试中。 如果您将其添加到 gitignore - 您将不会将其存储在 repo 中;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 2015-03-09
    • 2018-02-16
    • 1970-01-01
    相关资源
    最近更新 更多