在 jest 中加载测试 .env 文件

Dea*_*eat 6 reactjs jestjs

我正在尝试使用本地 .env 文件在带有 jest 的 React 项目上运行快照测试,但我不知道如何让 jest 识别它。

到目前为止我已经尝试过:

  • 添加dotenv.config({path: 'path/to/.env'});jest.setup.js
  • 在 cli 中使用 -env='path/to/.env' 运行 jest 添加
  • testEnvironment:jest.config.js 中的“path/to/.env”

支持这个功能吗?任何帮助,将不胜感激

Din*_*yan -1

.env配置适用于您的应用程序,而不是您的测试。

例如,如果您想根据 为应用程序中的变量设置不同的值env,它将是这样的

开发环境

GREET="Hello Dev!"
Run Code Online (Sandbox Code Playgroud)

测试环境

GREET="Hello Master!"
Run Code Online (Sandbox Code Playgroud)

生产环境

GREET="Hello User!"
Run Code Online (Sandbox Code Playgroud)

现在您在应用程序中的代码将是

const sendGreeting = () => {
  return process.env.GREET || 'default greet';
};
Run Code Online (Sandbox Code Playgroud)

您应该使用在文件中NODE_ENV设置的脚本来运行测试testpackage.json

"scripts": {
  ...
  "test": "NODE_ENV=test jest"
  ...
}
Run Code Online (Sandbox Code Playgroud)

因此,当您在玩笑中测试此方法时,您将获得正确的测试环境值。

describe('Test Env', () => {
  it('should return test greeting in test env', () => {
    expect(sendGreetings()).toEqual("Hello Master!");
  });
});
Run Code Online (Sandbox Code Playgroud)