web-dev-qa-db-ja.com

JESTがコードを実行しているかどうかを判断する方法は?

反応ネイティブプロジェクトでJSテストを作成しています。 JSが私のクラスのコードを実行している場合は、firebaseをreact nativeに具体的に使用しています。firebaseインスタンスをmockfirebaseインスタンスに置き換えたいのですが.

たとえば、以下のようなクラス設定があります。

import firebase from 'react-native-firebase';
class Database() {
    /// use the firebase instance
}

Jestが実行環境かどうかを確認したいので、インポート行を適切なモッククラスに置き換えます。

23
Jojo Narte

jestはJEST_WORKER_IDと呼ばれる環境変数を設定するため、これが設定されているかどうかを確認します。

function areWeTestingWithJest() {
    return process.env.JEST_WORKER_ID !== undefined;
}

NODE_ENVが設定されていない場合、jest CLIはそれを値「test」に設定することもわかります。これは、確認する別の方法かもしれません。

30
gae123

通常、シェルでグローバルにNODE_ENV=developmentを設定します。これは私にとってはうまくいきます:

typeof jest !== 'undefined'

global.jest'jest' in globalはグローバル変数ではないように見えるため、機能しません。ノードのrequireまたは__filename

1
Fábio Santos