Karma 测试与 ES6/Babel 反应
Karma Testing React with ES6/Babel
我正在尝试使用 webpack babel-loader 使用 karma 作为我的测试运行器来测试我的项目。代码全部构建成功(我想?或者 CLI 说它成功了,但是当我打开浏览器时,所有文件在 es6 导入时立即失败。知道我做错了什么吗?
var path = require('path');
module.exports = function(config) {
config.set({
basePath: '',
// frameworks: ['jasmine', 'karma-webpack'],
files: [
'lib/bundle.js'
],
exclude: ['*.styl'],
preprocessors: {
'test/**/*.js': ['webpack'],
'test/**/*.jsx': ['webpack'],
'src/**/*.jsx': ['webpack'],
'src/**/*.js': ['webpack']
},
plugins: [
require("karma-webpack")
],
webpack: {
entry: './src/entry.js',
module: {
loaders: [
{
test: path.join(__dirname, 'src'),
loader: 'babel-loader?stage=0&optional=runtime',
excludes: /node_modules/,
options: {
optional: ['runtime']
}
},
{
test: /\.styl$/,
loaders: ['style-loader', 'css-loader', 'stylus-loader']
}
]
},
webpackMiddleware: {
noInfo: true
}
}
});
};
10 11 2015 13:16:47.156:INFO [karma]: 延迟执行,这些浏览器还没有准备好:Chrome 46.0.2490 (Windows 8.1 0.0.0)
Chrome 46.0.2490 (Windows 8.1 0.0.0) 错误
您需要包含一些实现 karma.start 方法的适配器!
Chrome 46.0.2490 (Windows 8.1 0.0.0) 错误
您需要包含一些实现 karma.start 方法的适配器!
您在测试中包含了转译后的文件。例如,请参阅错误中的这一行:
WARNING in ./~/routes/dist/routes.js
Critical dependencies:
1:406-413 This seems to be a pre-built javascript file. Though this is possible, it's not recommended. Try to require the original source to get better results.
@ ./~/routes/dist/routes.js 1:406-413
为什么包含 dist
文件?您应该只包含 src
个文件和依赖项。
files: [
'../node_modules/react/react.js',
'../node_modules/babel-polyfill/dist/polyfill.js',
'**/*.js',
'**/*.jsx'
],
最后两个看起来不对。你告诉它加载所有 js/jsx
文件..包括 dist
文件。
这是有效的最终文件。
我做错了两件事(下面评论中指出的 1 件事):
我正在向文件数组添加未转译的代码,这当然会在浏览器中中断。从 Karma 的文档中,“文件是要在浏览器中加载的 files/patterns 的列表,”所以它当然在 es6 令牌上的 jsx 上崩溃了。
我没有选择 jasmine 作为我的框架,所以 Karma 运行ner 不知道从哪里开始,这就是为什么我得到启动方法错误的原因。
最后,我需要将我的测试包含在文件数组中,否则 Karma 将不会加载我的测试和 运行 它们。 (注意:测试也必须包含在预处理器数组中)。
var path = require('path');
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
files: [
'lib/bundle.js',
'test/**/*.jsx',
'test/**/*.js'
],
exclude: ['*.styl'],
preprocessors: {
'test/**/*.js': ['webpack'],
'test/**/*.jsx': ['webpack'],
'src/**/*.jsx': ['webpack'],
'src/**/*.js': ['webpack']
},
webpack: {
entry: './src/entry.js',
module: {
loaders: [
{
test: /\.js$|.jsx$/,
loader: 'babel-loader?stage=0&optional=runtime',
excludes: /node_modules/
},
{
test: /\.styl$/,
loaders: ['style-loader', 'css-loader', 'stylus-loader']
}
]
},
webpackMiddleware: {
noInfo: true
}
}
});
};
我正在尝试使用 webpack babel-loader 使用 karma 作为我的测试运行器来测试我的项目。代码全部构建成功(我想?或者 CLI 说它成功了,但是当我打开浏览器时,所有文件在 es6 导入时立即失败。知道我做错了什么吗?
var path = require('path');
module.exports = function(config) {
config.set({
basePath: '',
// frameworks: ['jasmine', 'karma-webpack'],
files: [
'lib/bundle.js'
],
exclude: ['*.styl'],
preprocessors: {
'test/**/*.js': ['webpack'],
'test/**/*.jsx': ['webpack'],
'src/**/*.jsx': ['webpack'],
'src/**/*.js': ['webpack']
},
plugins: [
require("karma-webpack")
],
webpack: {
entry: './src/entry.js',
module: {
loaders: [
{
test: path.join(__dirname, 'src'),
loader: 'babel-loader?stage=0&optional=runtime',
excludes: /node_modules/,
options: {
optional: ['runtime']
}
},
{
test: /\.styl$/,
loaders: ['style-loader', 'css-loader', 'stylus-loader']
}
]
},
webpackMiddleware: {
noInfo: true
}
}
});
};
10 11 2015 13:16:47.156:INFO [karma]: 延迟执行,这些浏览器还没有准备好:Chrome 46.0.2490 (Windows 8.1 0.0.0) Chrome 46.0.2490 (Windows 8.1 0.0.0) 错误 您需要包含一些实现 karma.start 方法的适配器!
Chrome 46.0.2490 (Windows 8.1 0.0.0) 错误 您需要包含一些实现 karma.start 方法的适配器!
您在测试中包含了转译后的文件。例如,请参阅错误中的这一行:
WARNING in ./~/routes/dist/routes.js
Critical dependencies:
1:406-413 This seems to be a pre-built javascript file. Though this is possible, it's not recommended. Try to require the original source to get better results.
@ ./~/routes/dist/routes.js 1:406-413
为什么包含 dist
文件?您应该只包含 src
个文件和依赖项。
files: [
'../node_modules/react/react.js',
'../node_modules/babel-polyfill/dist/polyfill.js',
'**/*.js',
'**/*.jsx'
],
最后两个看起来不对。你告诉它加载所有 js/jsx
文件..包括 dist
文件。
这是有效的最终文件。
我做错了两件事(下面评论中指出的 1 件事):
我正在向文件数组添加未转译的代码,这当然会在浏览器中中断。从 Karma 的文档中,“文件是要在浏览器中加载的 files/patterns 的列表,”所以它当然在 es6 令牌上的 jsx 上崩溃了。
我没有选择 jasmine 作为我的框架,所以 Karma 运行ner 不知道从哪里开始,这就是为什么我得到启动方法错误的原因。
最后,我需要将我的测试包含在文件数组中,否则 Karma 将不会加载我的测试和 运行 它们。 (注意:测试也必须包含在预处理器数组中)。
var path = require('path'); module.exports = function(config) { config.set({ basePath: '', frameworks: ['jasmine'], files: [ 'lib/bundle.js', 'test/**/*.jsx', 'test/**/*.js' ], exclude: ['*.styl'], preprocessors: { 'test/**/*.js': ['webpack'], 'test/**/*.jsx': ['webpack'], 'src/**/*.jsx': ['webpack'], 'src/**/*.js': ['webpack'] }, webpack: { entry: './src/entry.js', module: { loaders: [ { test: /\.js$|.jsx$/, loader: 'babel-loader?stage=0&optional=runtime', excludes: /node_modules/ }, { test: /\.styl$/, loaders: ['style-loader', 'css-loader', 'stylus-loader'] } ] }, webpackMiddleware: { noInfo: true } } }); };