【问题标题】:Dotenv loads envs but Jest doesn't read themDotenv 加载环境但 Jest 不读取它们
【发布时间】:2020-03-25 11:35:43
【问题描述】:

背景

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

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

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

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

问题

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

尝试过

我查看了this issue,它让我能够设置环境变量,但它与使用它们没有任何问题。

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

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

问题

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

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

【问题讨论】:

    标签: testing jestjs environment-variables dotenv


    【解决方案1】:

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

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

    无需进一步配置。

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

    所以,回答你的问题:也许你可以把你的环境变量放在一个单独的文件中,然后通过你的运行测试脚本加载。

    【讨论】:

      猜你喜欢
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 2015-09-02
      • 2020-08-30
      • 2021-11-08
      • 2020-01-22
      相关资源
      最近更新 更多