

`process.env` をテスト用に置き換えたいと考えています。

現状では以下のようにごっそりと置き換えています。もっとスマートな方法はありますでしょうか？

[code]

    describe('test', function() {
      beforeEach(function() {
        this.env = process.env;
        process.env = { hoge: 123 };
      });
      afterEach(function() { process.env = this.env; });
      it('works', function() { /* ... */ });
    });
    
[/code]

`function` の場合には Sinon.JS で `sinon.stub(obj, 'method', func)`
が良いと思うのですが、`property` の場合にはどうするのが良いのか分かりません。


CC BY-SA 3.0
2014-12-28T07:04:16.523
2724
2014-12-29T11:44:25.933
2014-12-29T11:44:25.933
33
2341
question
javascript テスト mock
Node.js で process.env をスタブする方法


Sinon.JSの[Sandbox API](http://sinonjs.org/docs/#sinon-sandbox)を使うのはどうでしょうか？  
以下サンプルコードです。  
これだとPATH環境変数だけスタブするというような事が出来ました。

[code]

    var sandbox = require('sinon').sandbox.create();
    describe('test', function() {
      beforeEach(function() {
        sandbox.stub(process.env, "PATH", "hoge");
      });
      afterEach(function() {
        sandbox.restore();
      });
      it('works', function() { /* ... */ });
    });
    
[/code]


CC BY-SA 3.0
2014-12-29T08:44:08.663
2779
2014-12-29T09:55:31.737
2014-12-29T09:55:31.737
33
33
2724
answer