1. ホーム
  2. node.js

[解決済み】Jestでprocess.envをテストする。

2022-04-10 11:18:58

質問

環境変数に依存するようなアプリケーションを持っています。

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

そして、例えばそれをテストしてみたいと思います。

  • APP_PORTはNode.jsの環境変数で設定することができます。
  • または Express.js で設定したポートでアプリケーションが動作していることを示します。 process.env.APP_PORT

Jestで実現するにはどうしたらいいですか?私はこれらを設定することができます process.env それともモック化する必要があるのでしょうか?

どのように解決するのですか?

私が行った方法 Stack Overflowの質問で見ることができます。 .

を使用することが重要です。 resetModules をテスト前に実行し、テスト内で動的にモジュールをインポートします。

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を実行する前に環境の値をロードする方法を探しているのであれば 答えは以下の通り . を使用する必要があります。 セットアップファイル を使用します。