背景
我正在使用process.env.<ENV NAME>
在某些类中设置变量。我需要在测试中设置它们以设置类变量,否则测试将失败。
当前,我在beforeAll()
钩子中设置变量。但是,有许多测试文件必须在其中设置这些env。如果不需要,我不想在所有这些文件中复制此代码。
我认为最好在每次测试之前通过Jest设置文件进行设置。在jest.config.js
中,我添加了setupFiles: ['<rootDir>/jestSetupTest.js']
。在此文件中,我添加了require('dotenv').config()
。 .env
文件位于根目录中。
我在两个不同的目录中分别有测试文件:./src/graphql/__tests__
和./src/utils/__tests__
。
问题
正在设置env,但是任何正在运行的Jest测试都不会读取它们。
尝试
我调查了this issue,这使我可以设置环境变量,但与使用它们有关的问题无关。
我已将require('dotenv').config()
添加到使用envs的测试文件中,但这仍然无法正常工作。这让我感到惊讶,我认为至少这会设置环境。
我在Jest上设置了--debug
,但没有显示是否设置了环境。
问题
有人知道发生了什么吗?或者如何进一步诊断这个问题?
我得到的印象环境可以根据上述SO帖子在Jest测试中设置和使用。为什么我不能使用它们?可能是我的文件设置方式出现配置问题吗?
答案 0 :(得分:1)
也许您已经找到了解决方案。我在自己的“创建反应应用”中很难从function isEmail(y) {
var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(String(y).toLowerCase());
}
文件中的env变量运行测试。最后,所需要做的就是在我的package.json文件中的cmd行脚本中将路径添加到所需的env文件:
.env.test
不需要进一步的配置。
但是“ create react app”可能会有一些预设。我对此不太确定。
因此,要提出一个问题:也许您可以将env变量放在单独的文件中,然后通过运行测试脚本进行加载。