2017-11-12 2 views
0

グローバルを使用し宣言するJavaScriptモジュールがいくつかあります。私はこれがアンチパターンであることは承知していますが、それは止まらない解決策です。私たちの依存関係が自分のESモジュールのバージョンを公開するまで、私たちはそれらをグローバルから切り離します。ここでは、例としてReduxで行うことについて説明します。ノード内のブラウザモジュールをテストするためのグローバルモック

// Example: instead of 
import createStore from '../path/to/redux.js'; 
// we do 
const {createStore} = Redux; 

これは、ブラウザで御馳走を動作し、依存関係が更新されたときに、それはリファクタリングするのは簡単だろう、しかし、モカを持つノードでのテストは別の話です:

// myReducer.test.mjs 

import reducer from '../../src/redux-modules/myReducer'; 
import initialState from '../../src/redux-modules/myReducer'; 

export default function videosReducerTests() { 
    assert('reducer', function() { 
    it('should return initial state by default', function() { 
     reducer({}, {}).should.equal(initialState); 
    }); 
    }); 
} 

私がインストールしました

"devDependencies": { 
    "@std/esm": "^0.14.0", 
}, 
"@std/esm":"js", 
"scripts": { 
    "redux-test": "node -r @std/esm test/redux/index.mjs", 
} 

yarn redux-testを実行した結果が

01:ESモジュールを搭載したノードの作業を支援し、次のと私のpackage.jsonをセットアップする
ReferenceError: Redux is not defined 

私は私のテストファイルの上部にglobal.Redux = {createStore: Function}などで必要な名前空間をからかってみたが、輸入は「掲揚」されているので、それらはすべて、無視されます。

このブロックを回避する方法についてのヒントはありますか?

答えて

0

reduxを完全にインポートすることができます。それは十分に小さく、ブラウザ/ノードのものを単純化するかもしれません。

関連する問題