Jestでprocess.envをテストする 質問する

Jestでprocess.envをテストする 質問する

次のような環境変数に依存するアプリケーションがあります:

const APP_PORT = process.env.APP_PORT || 8080;

そして、私は例えば次のようにテストしたいと思います:

  • APP_PORT は Node.js 環境変数によって設定できます。
  • または、エクスプレスアプリケーションはポートセットで実行されていますprocess.env.APP_PORT

Jest でこれをどうやって実現できるでしょうか?process.env各テストの前にこれらの変数を設定できますか、それとも何らかの方法でモックする必要がありますか?

ベストアンサー1

私がやった方法このStack Overflowの質問で見つけられます

使用することが重要ですリセットモジュール各テストの前に、テスト内でモジュールを動的にインポートします。

describe('environmental variables', () => {
  const OLD_ENV = process.env;

  beforeEach(() => {
    jest.resetModules() // Most important - it clears the cache
    process.env = { ...OLD_ENV }; // Make a copy
  });

  afterAll(() => {
    process.env = OLD_ENV; // Restore old environment
  });

  test('will receive process.env variables', () => {
    // Set the variables
    process.env.NODE_ENV = 'dev';
    process.env.PROXY_PREFIX = '/new-prefix/';
    process.env.API_URL = 'https://new-api.com/';
    process.env.APP_PORT = '7080';
    process.env.USE_PROXY = 'false';

    const testedModule = require('../../config/env').default

    // ... actual testing
  });
});

Jestを実行する前に環境値を読み込む方法を探している場合は、下記に回答. 使用すべきセットアップファイルそのために。

おすすめ記事