2017-11-21 2 views
2

ReferenceError:ウィンドウが定義されていません。私はnestテストをjestで単体テストに実行するとこのエラーが出ます。エラーは、次のコードのエクスポート機能から発生します。誰もこのタイプのエラーに直面して解決しましたか?ReferenceError:ウィンドウが定義されていません。 jestでユニットテストにnpmテストを実行したときにこのエラーが発生しました

import { createStore, applyMiddleware, compose, combineReducers } from 'redux'; 
import thunk from 'redux-thunk'; 

import rootReducer from '../modules/rootReducer'; 

    export function injectAsyncReducers(asyncReducers) { 
    const injectReducers = Object.keys(asyncReducers).reduce((all, item) => { 
    if (store.asyncReducers[item]) { 
     delete all[item]; 
    } 

    return all; 
    }, asyncReducers); 

    store.asyncReducers = Object.assign({}, store.asyncReducers, injectReducers); 
    replaceReducers(rootReducer); 
} 
+0

「redux」コードそのものh 'window'への参照はありません。あなたの 'rootReducer'はどのように見えますか? –

+0

これは私のrootReducerファイルのコードimport {combineReducers} from 'redux'です。 '../reducers/fetchMenu'からのインポートメニュー。 '../reducers/chooseOrderType'からのインポートオーダータイプ。 '../reducers/fetchVendorInfo'からインポートベンダー。 エクスポートデフォルトcombineReducers({ メニュー、 ベンダー、 オーダータイプ }); – khalifathul

答えて

0

あなたはブラウザではなく端末上でjestを実行するので、ウィンドウはありません。ウィンドウをグローバル変数として手動で定義する必要があります。

package.json

... 
"jest": { 
    "globals": { 
     "window": { 
     // whatever you need, put here manually. 
     } 
    } 
    } 
+0

次のエラーが返されます。typeError:window.WebSocketは、@ henrik-anderssonのようにコンストラクタ – khalifathul

+0

ではないので、 'window.WebSocket'を参照するパッケージを見つけてください。 – arikanmstf

1

このエラーは、通常、このような場合、INS jsdom(あなたがここでそれを見てとることができなければなりません、あなたは冗談のための右testEnviremoent構成を使用していないときに出てくる:https://github.com/tmpvar/jsdom )。

"test": "react-scripts test --env=jsdom"

:あなたは 作成反応するアプリを使用している場合、テストスクリプトは、このようにする必要があり

"jest": {"testEnvironment": "node"}

:あなたはこのようなあなたのpackage.jsonファイルに設定することができます

ここにtestEviroment設定のその他のオプションがあります:https://facebook.github.io/jest/docs/en/configuration.html#testenvironment-string

+0

'--env = jsdom'を追加すると私の問題が修正されました。私はプロジェクトをCRAに移行して、それを私のテストコマンドに追加するのを忘れた – Emobe

関連する問題