私はReactのTestUtilsと一緒にkarmaとmochaを使ってReactアプリケーションをテストしています。私は、次の輸出と輸入にモジュールをテストしてるのコンポーネントの一つ:私のテストでkarma/mochaテストスイートでは、ウィンドウオブジェクトのプロパティをどのようにモックできますか?
export const OPTIONS = window.__OPTIONS__;
、私はカルマで仮想Chromeブラウザにコンポーネントをレンダリングしています。 「コンポーネント」参照のレンダリング機能に let tree = TestUtils.renderIntoDocument(<Component />);
OPTIONS.someOption
ような何かをし、上記のテストを実行したとき、それが吹くとcannot read property 'someOption' of undefined.
を言う私は__OPTIONS__
変数の「モック」試してみました:私は経由でこれをやっていますbefore()
関数(テストを実行する前にその値を設定する)が、ログアウトして実際に設定されているのを見ても、コンポーネントモジュール内の値は未定義です。だから、webpackは実際に実行しているテストスクリプトの前にモジュールをバンドルしているので、常に定義されていないようです。
window.__OPTIONS__
は、ページの上部に<script>window.__OPTIONS__ = {};</script>
に含まれていて、コンポーネントモジュールの値で正しくインポートされているかのように値を設定する方法はありますか?
私はなぜ変数をウィンドウオブジェクトにアタッチしているのか分かりたくありません。なぜなら、私はこのケースでは避けられないものだからです。それはSalesforce固有の理由です。私がその変数を完全に使用することを避けることができたら、私はそうするでしょう。 beforeEach
で__OPTIONS__
でグローバルにwindowオブジェクトを追加する