我正在使用 Jest 来测试 Express RESTful API。一切正常,除了在使用 test
时我无法覆盖 Jest 设置的 dotenv
环境。
测试依赖 Knex 来运行一些 SQL 迁移脚本。在“本地”工作(阅读:笔记本电脑、台式机等)时,我的环境不是 test
,而是 sandbox
— 应用程序的 test
环境与 {{ 1}} Jest 默认设置的环境。
test
文件如下所示:
.env
我正在使用 KNEX_CONNECTION_DEBUG = true
NODE_ENV = sandbox
WINSTON_LOG_LEVEL = debug
,但我认为发生的事情是 Jest 最初设置了 --setupFiles "dotenv/config"
,并且因为 NODE_ENV
不会覆盖任何已经设置/声明的变量,它只是跳过 dotenv
文件中的 NODE_ENV
。最好告诉 Jest 默认不要设置任何东西。
基本上,我通常希望应用程序使用 .env
文件中的内容,这在大多数情况下都是如此,因为我确实在相关的 .env
条目上使用了 --require dotenv/config
,但到目前为止我找不到 Jest 的解决方案。
我不能使用 scripts
或任何其他类似机制在脚本中设置 cross-env
硬编码,否则我将不得不来回切换并确保它与我在 NODE_ENV
中的内容相匹配,有时(很少)需要更改。
有什么方法可以通过使用带有 Jest 或类似内容的 CLI 设置来实现这一点?