mirror of https://github.com/layui/layui
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
178 lines
4.7 KiB
178 lines
4.7 KiB
/** |
|
* @file karma自动化测试配置 |
|
* @author fe.xiaowu@gmail.com |
|
*/ |
|
|
|
var url = require('url'); |
|
|
|
/** |
|
* mock一个server供测试使用 |
|
* |
|
* @param {Object} req request |
|
* @param {Object} res response |
|
* @param {Function} next 下一路由 |
|
* |
|
* @example |
|
* 请求 /api/mock 参数如: |
|
* timeout - 超时时间, 默认 0 |
|
* statusCode - 状态码, 默认 200 |
|
* response - 响应内容, 默认 {} |
|
* dataType - 响应格式, 默认 json |
|
*/ |
|
var httpServer = function (req, res, next) { |
|
if (req.url.indexOf('/api/mock') === -1) { |
|
return next(); |
|
} |
|
|
|
var data = url.parse(req.url, true).query; |
|
|
|
setTimeout(function () { |
|
res.statusCode = data.statusCode || 200; |
|
res.setHeader('content-type', data.contentType || 'json'); |
|
res.end(data.response || '{}'); |
|
}, data.timeout || 0); |
|
}; |
|
|
|
/** |
|
* 源文件 |
|
* |
|
* @type {Array} |
|
*/ |
|
var sourceFileMap = [ |
|
'src/layui.js', |
|
'src/lay/modules/jquery.js', |
|
'src/lay/modules/carousel.js', |
|
'src/lay/modules/code.js', |
|
'src/lay/modules/element.js', |
|
'src/lay/modules/flow.js', |
|
'src/lay/modules/form.js', |
|
'src/lay/modules/laydate.js', |
|
'src/lay/modules/layedit.js', |
|
'src/lay/modules/layer.js', |
|
'src/lay/modules/laypage.js', |
|
'src/lay/modules/laytpl.js', |
|
'src/lay/modules/table.js', |
|
'src/lay/modules/tree.js', |
|
'src/lay/modules/upload.js', |
|
'src/lay/modules/util.js', |
|
'src/lay/modules/mobile/zepto.js', |
|
'src/lay/modules/mobile/layer-mobile.js', |
|
'src/lay/modules/mobile/upload-mobile.js' |
|
]; |
|
|
|
/** |
|
* 测试覆盖率文件, 要忽略 jquery.js、zepto.js |
|
* |
|
* @type {Object} |
|
*/ |
|
var coverageFileMap = {}; |
|
sourceFileMap.filter(function (uri) { |
|
return !/(jquery|zepto)\.js$/.test(uri); |
|
}).forEach(function (uri) { |
|
coverageFileMap[uri] = ['coverage']; |
|
}); |
|
|
|
module.exports = function (config) { |
|
return { |
|
// base path that will be used to resolve all patterns (eg. files, exclude) |
|
basePath: '', |
|
|
|
// frameworks to use |
|
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter |
|
// Important: 下列数组中文件将『逆序载入』 |
|
frameworks: ['mocha', 'chai', 'chai-sinon'], |
|
|
|
|
|
// list of files / patterns to load in the browser |
|
files: sourceFileMap.concat('test/**/*.js').concat({ |
|
pattern: 'src/css/**/*', |
|
included: false |
|
}, { |
|
pattern: 'src/font/**/*', |
|
included: false |
|
}, { |
|
pattern: 'src/images/**/*', |
|
included: false |
|
}), |
|
|
|
|
|
// list of files to exclude |
|
exclude: [], |
|
|
|
client: { |
|
mocha: { |
|
// mocha测试超时6秒 |
|
timeout: 1000 * 6 |
|
} |
|
}, |
|
|
|
|
|
// preprocess matching files before serving them to the browser |
|
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor |
|
preprocessors: coverageFileMap, |
|
|
|
|
|
// test results reporter to use |
|
// possible values: 'dots', 'progress' |
|
// available reporters: https://npmjs.org/browse/keyword/karma-reporter |
|
reporters: [ |
|
'mocha' |
|
// 'coverage' |
|
], |
|
|
|
coverageReporter: { |
|
// specify a common output directory |
|
dir: '.', |
|
reporters: [ |
|
// { type: 'html', subdir: 'report-html' }, |
|
{ |
|
type: 'lcov', |
|
subdir: 'coverage' |
|
}, |
|
{ |
|
type: 'text-summary' |
|
} |
|
] |
|
}, |
|
|
|
|
|
// web server port |
|
port: 9876, |
|
|
|
|
|
// enable / disable colors in the output (reporters and logs) |
|
colors: true, |
|
|
|
|
|
// level of logging |
|
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG |
|
// Note: 如果要调试Karma,请设置为DEBUG |
|
logLevel: config.LOG_INFO, |
|
|
|
// start these browsers |
|
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher |
|
browsers: [ |
|
'PhantomJS' |
|
], |
|
|
|
|
|
// enable / disable watching file and executing tests whenever any file changes |
|
// Note: 代码改动自动运行测试,需要singleRun为false |
|
autoWatch: false, |
|
|
|
// Continuous Integration mode |
|
// if true, Karma captures browsers, runs the tests and exits |
|
// 脚本调用请设为 true |
|
singleRun: true, |
|
|
|
middleware: ['httpServer'], |
|
|
|
plugins: ['karma-*', { |
|
'middleware:httpServer': [ |
|
'factory', function () { |
|
return httpServer; |
|
} |
|
] |
|
}] |
|
}; |
|
};
|
|
|