【发布时间】:2021-07-10 04:36:08
【问题描述】:
我正在使用
- 节点 14
- firebase 功能测试:0.2.3
- firebase 管理员:9.6.0
- firebase 功能:3.13.2
- firebase 工具:9.10.0
- 摩卡:8.3.2,
- ts-node: 9.1.1
如果我运行firebase emulators:start
那么我希望process.env 会有类似的属性
"FUNCTIONS_EMULATOR": "true",
"FIRESTORE_EMULATOR_HOST": "localhost:8080"
现在我需要使用 mocha 为我的云功能创建测试,我将使用 Firestore 和函数模拟器对其进行测试,我将文件名命名为 events_cron_job.test.ts
在我运行模拟器后,我尝试控制台记录这些值,但我得到了这样的未定义
我期待
console.log(process.env.FUNCTIONS_EMULATOR) // will be "true"
console.log(process.env.FIRESTORE_EMULATOR_HOST) // will be "localhost:8080"
我认为这只发生在测试环境中(我正在使用 mocha),我有常规的 http 触发器,它按预期工作
在运行模拟器之前,我尝试在终端上执行它
export FIRESTORE_EMULATOR_HOST="localhost:8080"
export FUNCTIONS_EMULATOR="true"
然后执行 firebase emulators:start ,但结果是一样的,这些值我仍然未定义
因为这些值是未定义的,那么如果我的笔记本电脑与互联网断开连接,那么这个测试将不会运行(即它只会访问生产服务器中的数据,而不是模拟器!),我希望测试仍然会运行即使我使用模拟器后没有互联网连接。
我运行 mocha 测试使用
mocha -r ts-node/register src/tests/cloud_function_tests --recursive --extension .test.ts --timeout 60000 --exit
【问题讨论】:
-
你试过像this gitbub issue中描述的那样运行测试
-
@RafaelLemos 是的,这就是解决方案,我终于在 4 天后找到了它。谢谢拉斐尔!
-
太好了,我会把这个变成答案。
标签: node.js firebase google-cloud-firestore google-cloud-functions mocha.js