34a30c1b25
* 添加 laydate 测试 * 添加 options.format 和 options.value 叠加时的验证 * 修改必须单元测试通过后再进行浏览器测试 * 添加判断css是否加载成功 * 优化 options.elem 测试 * 完善laydate测试 * 更新事件回调测试 * 先把 options.format 注释了, 依赖 master 的修复 * 添加 mock server * 更新404地址 * 使用 show api 来显示日历 * 测试火狐浏览器 * 修复火狐报错 * add callback test case * fix firefox error * fix win var * add window.lay test case * fix firefox test error * add edga test * update `laydate.render({value})` test case * update options.dateTime test case
179 lines
4.7 KiB
JavaScript
179 lines
4.7 KiB
JavaScript
/**
|
||
* @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;
|
||
}
|
||
]
|
||
}]
|
||
};
|
||
};
|