繁体   English   中英

Dotenv 加载 envs 但 Jest 不读取它们

[英]Dotenv loads envs but Jest doesn't read them

背景

我正在使用process.env.<ENV NAME>在某些类中设置变量。 我需要在要设置的类变量的测试中设置它们,否则测试失败。

目前,我正在beforeAll()钩子中设置变量。 但是,我必须在许多测试文件中设置这些环境。 如果不需要,我不想在所有这些文件中复制此代码。

我决定在每次测试之前通过 Jest 设置文件设置它们是个好主意。 jest.config.js我添加了setupFiles: ['<rootDir>/jestSetupTest.js'] 在这个文件中,我添加了require('dotenv').config() .env文件位于根目录中。

我在几个不同的目录中有测试文件: ./src/graphql/__tests__./src/utils/__tests__

问题

正在设置 envs,但它们没有被任何正在运行的 Jest 测试读取。

尝试

我研究了这个问题,它使我能够设置环境变量,但它与使用它们的问题无关。

我已经将require('dotenv').config()到使用 envs 的测试文件中,但这仍然不起作用。 这让我感到惊讶,我认为至少这会设置环境。

我在 Jest 上设置了--debug但这并没有显示是否设置了 envs。

问题

有谁知道发生了什么? 或者我如何进一步诊断这个问题?

我的印象是可以在 Jest 测试中设置和使用 envs,根据上面的 SO 帖子。 为什么我不能使用它们? 这可能是我的文件设置方式的配置问题吗?

也许您已经找到了解决方案。 我有自己的挣扎,让测试使用.env.test文件中的 env 变量运行我的“创建反应应用程序”。 最后,所需要做的就是在我的 package.json 文件中的 cmd 行脚本中添加所需 env 文件的路径:

    "test": "react-scripts test dotenv_config_path=.env.test",

不需要进一步的配置。

但是可能会有一些来自“创建反应应用程序”的预设。 我不完全确定这一点。

因此,要解决您的问题:也许您可以将 env 变量放在一个单独的文件中,然后通过运行测试脚本加载。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM