为什么 process.env.FIRESTORE_EMULATOR_HOST 在测试环境中会未定义?即使我有 运行 模拟器
why process.env.FIRESTORE_EMULATOR_HOST will be undefined in test environment? even though I have run the emulator
我正在使用
- 节点 14
- firebase 函数测试:0.2.3
- firebase-admin: 9.6.0
- firebase 函数:3.13.2
- firebase 工具:9.10.0
- 摩卡咖啡:8.3.2,
- ts-节点: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 -r ts-node/register src/tests/cloud_function_tests --recursive --extension .test.ts --timeout 60000 --exit
如您在此 Github issue comment 中所见,为了 运行 使用 Firebase 模拟器进行测试,您应该使用以下命令来触发它:
firebase emulators:exec "npm test"
因为这是 Firebase 团队使用模拟器执行测试的方式。
我正在使用
- 节点 14
- firebase 函数测试:0.2.3
- firebase-admin: 9.6.0
- firebase 函数:3.13.2
- firebase 工具:9.10.0
- 摩卡咖啡:8.3.2,
- ts-节点: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 -r ts-node/register src/tests/cloud_function_tests --recursive --extension .test.ts --timeout 60000 --exit
如您在此 Github issue comment 中所见,为了 运行 使用 Firebase 模拟器进行测试,您应该使用以下命令来触发它:
firebase emulators:exec "npm test"
因为这是 Firebase 团队使用模拟器执行测试的方式。