testing - Dotenv 加载环境但 Jest 不读取它们
问题描述
背景
我process.env.<ENV NAME>
用来在某些类中设置变量。我需要在测试中设置它们以设置类变量,否则测试失败。
目前,我将变量设置在一个beforeAll()
钩子中。但是,我必须在许多测试文件中设置这些环境。如果不需要,我不想在所有这些文件中复制此代码。
我认为在每次测试之前通过 Jest 设置文件设置它们是个好主意。在jest.config.js
我添加setupFiles: ['<rootDir>/jestSetupTest.js']
. 在这个文件中,我添加了require('dotenv').config()
. 该.env
文件位于根目录中。
我在几个不同的目录中有测试文件:./src/graphql/__tests__
和./src/utils/__tests__
.
问题
正在设置环境,但正在运行的任何 Jest 测试都没有读取它们。
尝试过
我研究了这个问题,它让我能够设置环境变量,但它与使用它们的问题无关。
我已经添加require('dotenv').config()
到使用 envs 的测试文件中,但这仍然不起作用。这让我感到惊讶,我认为至少这会设置环境。
我设置--debug
了 Jest,但这并没有显示是否设置了环境。
问题
有谁知道发生了什么?或者我如何进一步诊断这个问题?
根据上面的 SO 帖子,我得到印象 envs 可以在 Jest 测试中设置和使用。为什么我无法使用它们?我的文件设置方式可能是配置问题吗?
解决方案
也许您已经找到了解决方案。.env.test
我在为我的“创建反应应用程序”的文件中使用环境变量运行测试时遇到了自己的困难。最后,所需要做的就是在我的 package.json 文件中的 cmd 行脚本中添加所需 env 文件的路径:
"test": "react-scripts test dotenv_config_path=.env.test",
无需进一步配置。
但是可能会有一些来自“创建反应应用程序”的预设。我对此并不完全确定。
所以,要回答你的问题:也许你可以把你的环境变量放在一个单独的文件中,然后通过你的运行测试脚本加载。
推荐阅读
- php - 将php值传递给html
- grafana - 如何在 Grafana 的单个警报通知电子邮件中发送多个值?
- java - 代替 Maven 仓库,使用 .m2 目录
- jenkins - Jenkins:由提交到目标分支触发的 PR 管道
- azure-ad-verifiable-credentials - 似乎只允许一种类型的凭证?
- str-replace - 如何从剩余表单结果响应中删除前导和结束字符串和标题
- kotlin-multiplatform - 如何使依赖项项目对 Ios 应用程序可见?
- python - 为错误栏指定颜色列表时出现“无效的 RGBA 参数”错误
- python - 列出 AWS S3 Bucket 中子文件夹的内容
- android - 编辑器下的 Android Studio 文件结构选项卡