【发布时间】: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