小编Ron*_*ley的帖子

使用.env文件进行单元测试,并使用jest

是否可以从env文件加载环境变量,以便在Jest中进行单元测试?我正在寻找对它进行一系列测试,如下所示:

// unit tests for env file
describe('env', () => {
    it('should have a client id', () => {
        expect(process.env.CLIENT_ID).toBeDefined();
    });
    it('should have a client secret', () => {
        expect(process.env.CLIENT_SECRET).toBeDefined();
    });
    it('should have a host', () => {
        expect(process.env.HOST).toBeDefined();
    });
    it('should have a scope', () => {
        expect(process.env.SCOPE).toBeDefined();
    });
    it('should have a response type', () => {
        expect(process.env.RESPONSE_TYPE).toBeDefined();
    });
    it('should have a redirect uri', () => {
        expect(process.env.REDIRECT_URI).toBeDefined();
    });
});
Run Code Online (Sandbox Code Playgroud)

目前,所有上述测试都将失败,并指出变量未定义.最初我使用的是mocha/chai设置,这允许我通过使用dotenv加载我的所有env变量.这涉及通过webpack运行所有单元测试并且工作正常.

但是,通过阅读文档, Jest不会通过webpack运行测试; 而是通过moduleNameMapper模拟出模块.这适用于其他一切,但我无法加载env文件变量.到目前为止,我已经尝试将setupFiles选项用于调用dotenv.config的js文件,其中包含给定的env文件的路径,如下所示:

// setup file for jest …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing environment-variables jestjs

17
推荐指数
7
解决办法
1万
查看次数