[英]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.