在Jest中加载测试.env文件

时间:2018-11-30 17:00:18

标签: reactjs jestjs

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

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

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

是否支持此功能?任何帮助将不胜感激

4 个答案:

答案 0 :(得分:1)

我目前正在做的事情是这样的:

beforeEach(()=> {
    process.env = Object.assign(process.env, { REACT_APP_ENV_VAR: 'some env variable' });
});

通过这种方式,我可以选择在每个测试中使用什么变量,别忘了清理env上的afterEach

答案 1 :(得分:0)

将 Jest 测试所需的环境变量放在 .env.test 中。

jest doc

Jest sets the following environment variables:

NODE_ENV
Set to 'test' if it's not already set to something else.

因此 .env.test 中的环境变量会被 jest 自动设置。

答案 2 :(得分:0)

在 Linux 上,您可以这样做:


typedef union{
  float number;
  uint8_t bytes[4];
} FLOATUNION_t;

FLOATUNION_t myValue;

float getFloat(){ 
 int cont = 0; 
 FLOATUNION_t f; 
 while (cont < 4 ){ 
 f.bytes[cont] = Serial.read() ; 
 cont = cont +1; 
 } 
 return f.number; 
}

"scripts": { ... "test": "export $(xargs < .env) && jest", ... } 部分从 export $(xargs < .env) 文件加载环境值。

答案 3 :(得分:-1)

.env配置是针对您的应用程序而非测试的。

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

development.env

GREET="Hello Dev!"

test.env

GREET="Hello Master!"

production.env

GREET="Hello User!"

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

const sendGreeting = () => {
  return process.env.GREET || 'default greet';
};

您应该使用将NODE_ENV文件中的test设置为package.json的脚本来运行测试

"scripts": {
  ...
  "test": "NODE_ENV=test jest"
  ...
}

所以当您开玩笑地测试此方法时,您将拥有正确的测试环境值。

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