2016-11-13 105 views
2

鉴于这样的事情:是否可以为一次测试设置环境变量?

it('uses env variables correctly', function(done) { 
    assert.equal(process.env.x * process.env.y, 10); 
}); 

我想设置xy环境变量只有这一个测试。那可能吗?

+0

我不认为这是可能的节点,您可以通过正常节点做beforeTest组变量通过访问的了'x'和'y' process.env全局变量,但这是一个不好的做法。 一个问题,但你为什么要测试NodeJs的功能?也许你应该重新考虑这个测试的必要性。 – pkanev

回答

7

这是最常用的方法:

describe('env', function() { 
    var env; 

    // mocking an environment 
    before(function() { 
    env = process.env; 
    process.env = { x: 2, y: 5 }; 
    }); 

    // running tests 
    it('uses env variables correctly', function (done) { 
    assert.equal(process.env.x * process.env.y, 10); 
    done(); 
    }); 

    // restoring everything back 
    after(function() { 
    process.env = env; 
    }); 
});