2015-12-04 22 views
7

Webpackを使用してクライアントコードをES5に変換するES6プロジェクトがあります。プロジェクトではクライアント側でReactJSを使用しているため、ユニットテストではReact TestUtilsを使用しています。最新のアップデート(0.14)では、React changed how several modules are imported(TestUtilsを含む)。更新したいのですが、インポートを変更して単体テストを動作させる方法を理解できません。モジュールが見つかりません:エラー:モジュール 'react-addons-test-utils'を解決できません

私がテストを実行しようとすると、私は次のメッセージを取得:私のtests_auth.jsxとtest_modal.jsxファイルで

04 12 2015 12:40:48.038:ERROR [karma]: { [Error: no such file or directory] 
    code: 'ENOENT', 
    errno: 34, 
    message: 'no such file or directory', 
    path: '/_karma_webpack_/public/test/main.js' } 
Error: no such file or directory 
    at MemoryFileSystem.readFileSync (<project>/node_modules/karma-webpack/node_modules/webpack-dev-middleware/node_modules/memory-fs/lib/MemoryFileSystem.js:107:10) 
    at MemoryFileSystem.readFile (<project>/node_modules/karma-webpack/node_modules/webpack-dev-middleware/node_modules/memory-fs/lib/MemoryFileSystem.js:297:21) 
    at doRead (<project>/node_modules/karma-webpack/index.js:156:26) 
    at Plugin.readFile (<project>/node_modules/karma-webpack/index.js:160:3) 
    at doNTCallback0 (node.js:419:9) 
    at process._tickCallback (node.js:348:13) 
Hash: dee787e2bee8303745db 
Version: webpack 1.12.9 
Time: 3657ms 
           Asset  Size Chunks  Chunk Names 
       public/test/main.js 1.71 MB  0  public/test/main.js 
5044d04bf14a5de57d08.hot-update.json 35 bytes    
chunk {0} public/test/main.js (public/test/main.js) 1.6 MB [rendered] 
    [0] ./public/test/main.js 176 bytes {0} [built] 
    [1] ... 

ERROR in ./public/test/common/test_modal.jsx 
Module not found: Error: Cannot resolve module 'react-addons-test-utils' in <project>/public/test/common 
@ ./public/test/common/test_modal.jsx 13:28-62 

ERROR in ./public/test/pages/test_auth.jsx 
Module not found: Error: Cannot resolve module 'react-addons-test-utils' in <project>/public/test/pages 
@ ./public/test/pages/test_auth.jsx 17:28-62 

を、私は次の輸入を開始:

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import TestUtils from 'react-addons-test-utils'; 

私のpackage.jsonでのテストスクリプトは次のとおりです。

PHANTOMJS_BIN=./node_modules/.bin/phantomjs && ./node_modules/karma/bin/karma start karma.config.js 

私の関連する依存関係は、以下のとおりです。

"devDependencies": { 
    "chai": "^3.4.1", 
    "chai-as-promised": "^5.1.0", 
    "coveralls": "^2.11.4", 
    "karma": "^0.13.9", 
    "karma-chai": "^0.1.0", 
    "karma-chai-as-promised": "^0.1.2", 
    "karma-chai-plugins": "^0.6.1", 
    "karma-coverage": "^0.5.2", 
    "karma-mocha": "^0.2.0", 
    "karma-phantomjs-launcher": "^0.2.1", 
    "karma-sinon-chai": "^1.0.0", 
    "karma-webpack": "^1.7.0", 
    "mocha": "^2.3.3", 
    "phantomjs": "^1.9.18", 
    "react-hot-loader": "^1.3.0", 
    "webpack-dev-server": "^1.10.1" 
    }, 
    "dependencies": { 
    "react": "0.14.3", 
    "react-dom": "0.14.3", 
    "webpack": "^1.12.1" 
    } 

私karma.config.jsです:最後に、私のファイル構造は、このようなものになります

var webpack = require('webpack'); 

module.exports = function(config) { 
    'use strict'; 

    config.set({ 
     files: [ 
      './public/test/polyfill.js', 
      './public/test/main.js' 
     ], 
     preprocessors: { 
      './public/test/main.js': [ 
       'webpack' 
      ] 
     }, 
     browsers: [ 
      'PhantomJS' 
     ], 
     frameworks: [ 
      'mocha', 
      'sinon-chai', 
      'chai-as-promised', 
      'chai' 
     ], 
     reporters: [ 
      'progress', 
      'coverage' 
     ], 
     coverageReporter: { 
      dir: 'coverage/', 
      reporters: [ 
       { 
        type: 'lcovonly', 
        subdir: '.', 
        file: 'lcov.info' 
       }, { 
        type: 'html', 
        subdir: 'html' 
       } 
      ] 
     }, 
     webpack: { 
      plugins: [ 
       new webpack.HotModuleReplacementPlugin(), 
       new webpack.NoErrorsPlugin() 
      ], 
      module: { 
       loaders: [ 
        { 
         test: /\.jsx?$/, 
         exclude: /node_modules/, 
         loader: 'babel-loader?stage=0' 
        } 
       ] 
      }, 
      resolve: { 
       extensions: [ 
        '', 
        '.js', 
        '.jsx' 
       ], 
       modulesDirectories: [ 
        'node_modules', 
        'public/src', 
        'public/test' 
       ] 
      } 
     }, 
     webpackMiddleware: { 
      noInfo: true 
     }, 
     singleRun: true, 
     plugins: [ 
      'karma-mocha', 
      'karma-webpack', 
      'karma-coverage', 
      'karma-sinon-chai', 
      'karma-chai', 
      'karma-chai-plugins', 
      'karma-chai-as-promised', 
      'karma-phantomjs-launcher' 
     ] 
    }); 
}; 

karma.config.js 
package.json 
node_modules/ 
public/ 
    app.js 
    index.html 
    src/ 
     main.jsx 
    test/ 
     main.js 
     polyfill.js 
     pages/ 
      test_auth.jsx 
     common/ 
      test_modal.jsx 

を私は明らかに間違って構成された何かを持っているが、私は持っていますそれが何であるかを理解するのに苦労します。誰も似たような問題に遭遇しましたか? Karma、Webpack、React 0.14にもっと精通している人は私が間違っていることを知っていますか?

答えて

15

私は今、かなり馬鹿だと感じます。私はpackage.jsonに 'react-addons-test-utils'を追加するのを忘れていました。

関連する問題