Reactjs 慢业单元测试
我用Jasmine和Karma为一个小范围应用程序编写了单元测试,Karma在这些测试中运行得很慢 这是我的业力配置:Reactjs 慢业单元测试,reactjs,unit-testing,webpack,karma-runner,karma-jasmine,Reactjs,Unit Testing,Webpack,Karma Runner,Karma Jasmine,我用Jasmine和Karma为一个小范围应用程序编写了单元测试,Karma在这些测试中运行得很慢 这是我的业力配置: var unitTestReportOutputDir = 'unit-test-report'; module.exports = function (config) { config.set({ basePath: '', frameworks: ['jasmine'], reporters: ['dots'], port: 9876,
var unitTestReportOutputDir = 'unit-test-report';
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
reporters: ['dots'],
port: 9876,
colors: false,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
autoWatchBatchDelay: 300,
exclude: ['./test/data/*.js'],
files: [
'tests.webpack.js'],
preprocessors: {
'tests.webpack.js': ['webpack']
},
webpack: require('./webpack.config.js'),
webpackMiddleware: {
noInfo: true
},
htmlReporter: {
outputDir: unitTestReportOutputDir, // where to put the reports
focusOnFailures: true, // reports show failures on start
namedFiles: true, // name files instead of creating sub-directories
pageTitle: 'Unit Test Report', // page title for reports; browser info by default
urlFriendlyName: false, // simply replaces spaces with _ for files/dirs
reportName: 'test-summary', // report summary filename; browser info by default
// experimental
preserveDescribeNesting: false, // folded suites stay folded
foldAll: false, // reports start folded (only with preserveDescribeNesting)
}
});
}
这是我的webpack.config.js:
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var webpack = require('webpack');
var UglifyJsPlugin = require('uglify-js-plugin');
const path = require('path');
module.exports = {
devtool: 'inline-source-map',
entry: ['./src/index.js'],
output: {path: path.resolve(__dirname, "builds"), filename: 'bundle.js'},
module: {
rules: [
{
test: /\.jsx?$/,
use: [
{
loader: 'babel-loader'
}
]
},
{
test: /\.sass$/,
exclude: '/node_modules/',
use: ExtractTextPlugin.extract({
fallback: "style-loader",
loader: "css-loader!sass-loader"
})
}
]
},
resolve: {
extensions: ['.js', '.jsx', '.sass']
},
plugins: [
new ExtractTextPlugin({
filename: "stylesheets/style.css",
disable: false,
allChunks: true
}),
new webpack.ProvidePlugin({
"$": "jquery",
"jQuery": "jquery",
"window.jQuery": "jquery"
}),
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify('production')
}
}),
new webpack.optimize.UglifyJsPlugin({
sourceMap: true,
compress: {
warnings: false
}
})
]
})
在运行单元测试时,你们通常做些什么来加速Karma
我把代码放在:
每当我更新测试时,karma花了1分15秒启动,33秒运行测试。有35个单元测试
谢谢。你看了吗?这个插件解决了一些浏览器的内存使用问题,以及大量的内存密集型规范
它不会并行运行所有测试,但从4.0.0版开始,它支持并行浏览器执行(即,将在
karma.conf.js
中列出的浏览器之间共享测试)请查看karma parallel
插件:
与
karma sharding
插件相比,karma webpack更受欢迎且兼容 您正在运行多少个测试,速度有多慢?您可能需要配置两个Web包——分别用于生产和测试(实际上,您将有3个,包括两个方面的一些常见内容)--您实际上不需要缩小所有文件并为每个测试生成源映射run@xmike我将创建两个webpack配置,看看是否有任何改进。@Leon让我测量运行测试所需的时间,然后返回给您。我还将很快分享github的源代码。感谢you@Leon有35个单元测试。卡玛花了1分15秒才开始。运行测试需要33秒,每当我更新一个testHi时,我都会安装这个插件,看看它是否能提高执行时间。结果如何?