通过 dotenv/config 使用 Jest 时覆盖 NODE_ENV

我正在使用 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 设置来实现这一点?

zhanglun0909 回答:通过 dotenv/config 使用 Jest 时覆盖 NODE_ENV

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/15834.html

大家都在问