javascript - firebase.config() 在集成测试期间为空
问题描述
我正在使用在线模式(推荐)为我的 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 时,这些配置值就会出现。我不想functions.config()
使用这种方法来嘲笑我,我想在测试环境中编写集成测试。
解决方案
我知道我参加聚会有点晚了,但这是解决方案:
firebase functions:config:get > .runtimeconfig.json
下面的几个链接描述了什么是什么以及为什么:
- https://firebase.google.com/docs/functions/local-emulator(上面代码的文档)
- https://github.com/firebase/firebase-functions/issues/264(问题描述+解决方案)
显然,在测试期间,firebase 并没有接触到函数本身。所以必须有一个本地实例。如果您使用上面提供的名称 - 它将自动添加到测试中。如果您将其添加到 gitignore - 您将不会将其存储在 repo 中;)
推荐阅读
- javascript - Discord.js 流调度程序事件
- python - 使用 BeautifulSoup 从 yahoo Finance 抓取期权价格并找到
- python - 没有得到网络输出
- amazon-web-services - 放大如何恢复后端定义?
- ios - 我可以将静态图像用于 lottie 而不是 json 文件吗?
- javascript - 无法替换对象中的属性值
- c - 2 之差 - SIGSEGV (11) [代码战]
- python - find() 不接受关键字参数 - 列表理解
- android - 在Android按钮背景中没有改变
- vue.js - 检查是否加载了vue组件