2017-07-03 15 views
0

私はJavaScriptの世界で初心者です。私の最初の仕事はテストで既存のプロジェクトをカバーすることです。我々はES6/babel/webpack2を使用しており、Mocha/Chaiをテストフレームワークとして選択することに合意しました。JSモカテストES6 Babel

私はプロジェクトのルートに.babelrcファイルを作成していたんでした最初の事:

その後
{ 
    "presets": ["es2015", "react", "stage-0"] 
} 

私はpackage.jsonに次のスクリプトを追加しました:

"test": "mocha --compilers js:babel-core/register ./src/test/*.js" 

私の簡単なテストファイル次のようになります。

私のテストを実行する(npmテストを実行する)次のエラーが表示されます。

Error: Cannot find module 'dashboard-app/utils/common-utils' 
    at Function.Module._resolveFilename (module.js:469:15) 
    at Function.Module._load (module.js:417:25) 
    at Module.require (module.js:497:17) 
    at require (internal/module.js:20:19) 

ダッシュボードアプリは両方webpack.config.dev.jswebpack.config.prod.jsに設定されているだけで、別名、であるように、これは非常に期待されている:

resolve: { 
     modules: [ 
      path.resolve(__dirname), 
      "node_modules" 
     ], 
     alias: { 
      'dashboard-app/config': 'src/config', 
      'dashboard-app/utils': 'src/utils', 
      ....... 

基本的に私の質問は、私のwebpack.config.dev.jsをバインドするために、package.jsonのテストスクリプトをどのように修正するべきかということです(これはテスト環境に適しています)。以下は私のために(2つのバリアントのどちらも)動作しませんでした:

"test": "NODE_ENV=dev mocha --compilers js:babel-core/register ./src/test/*.js" 

"test": "NODE_ENV=dev --env=dev mocha --compilers js:babel-core/register ./src/test/*.js" 

答えて

1

あなたがあなたのjavascriptをバンドルするのWebPACKを使用していない、あなたのpackage.jsonからテストを実行すると、あなたのテストに伝える必要がありますので、そのインポートを理解する方法。 mock-require libを使用して、エイリアスのインポートをモックアップできます。あなたは

mock('dashboard-app/utils/common-utils', 'src/utils/common-utils'); 

のようなものがあるでしょう魔女でtest_helper.jsファイルを書きますそして、NPMスクリプトは次のようになります。私のために働いた

"test": "mocha --compilers js:babel-core/register test_helper.js ./src/test/*.js" 
+0

どうもありがとう! – Viacheslav

関連する問題