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にもっと精通している人は私が間違っていることを知っていますか?