mirror of
https://github.com/WeBankFinTech/fes.js.git
synced 2025-05-22 06:35:33 +08:00
feat(fes-cli): 支持单元测试
添加fes test:unit命令,当运行命令时,执行项目test目录下的测试脚本
This commit is contained in:
parent
91096b29dd
commit
bf07558130
1
.eslintignore
Normal file
1
.eslintignore
Normal file
@ -0,0 +1 @@
|
||||
/packages/fes-template/test
|
@ -59,6 +59,23 @@ commander.command('build')
|
||||
build(config);
|
||||
});
|
||||
|
||||
commander
|
||||
.command('test:unit')
|
||||
.description('单元测试')
|
||||
.option('-w, --watch', 'run in watch mode')
|
||||
.option('-g, --grep', 'only run tests matching <pattern>')
|
||||
.option('-s, --slow', "'slow' test threshold in milliseconds")
|
||||
.option('-t, --timeout', 'timeout threshold in milliseconds')
|
||||
.option('-b, --bail', 'bail after first test failure')
|
||||
.option('-r, --require', 'require the given module before running tests')
|
||||
.option('--include', 'include the given module into test bundle')
|
||||
.option('--inspect-brk', 'Enable inspector to debug the tests')
|
||||
.action(() => {
|
||||
const test = require('../build/tasks/test');
|
||||
const config = generateConfig('build', commander.env || 'dev');
|
||||
test(config, process.argv.slice(3));
|
||||
});
|
||||
|
||||
commander.parse(process.argv);
|
||||
|
||||
|
||||
|
84
packages/fes-cli/build/configs/webpack.test.config.js
Normal file
84
packages/fes-cli/build/configs/webpack.test.config.js
Normal file
@ -0,0 +1,84 @@
|
||||
const path = require('path');
|
||||
const ProgressBarPlugin = require('progress-bar-webpack-plugin');
|
||||
const nodeExternals = require('webpack-node-externals');
|
||||
const VueLoaderPlugin = require('vue-loader/lib/plugin');
|
||||
|
||||
const isCoverage = process.env.NODE_ENV === 'coverage';
|
||||
|
||||
const generateConfig = require('../helpers/config');
|
||||
|
||||
const configs = generateConfig();
|
||||
|
||||
const webpackConfig = {
|
||||
mode: 'development',
|
||||
output: {
|
||||
path: configs.folders.PROJECT_DIST_DIR,
|
||||
publicPath: '/dist/',
|
||||
filename: '[name].js',
|
||||
chunkFilename: '[id].js',
|
||||
devtoolModuleFilenameTemplate: '[absolute-resource-path]',
|
||||
devtoolFallbackModuleFilenameTemplate: '[absolute-resource-path]?[hash]'
|
||||
},
|
||||
resolve: {
|
||||
extensions: ['.js', '.vue', '.fes', '.json'],
|
||||
alias: {
|
||||
projectRoot: configs.folders.PROJECT_DIR,
|
||||
'@': path.resolve(configs.folders.PROJECT_DIR, 'src'),
|
||||
'@@': path.resolve(configs.folders.FES_DIR, 'src'),
|
||||
assets: path.resolve(configs.folders.PROJECT_DIR, './src/assets/'),
|
||||
vue$: 'vue/dist/vue.esm.js'
|
||||
},
|
||||
modules: [
|
||||
'node_modules',
|
||||
path.join(configs.folders.CLI_DIR, 'node_modules'),
|
||||
path.join(configs.folders.PROJECT_DIR, 'node_modules')
|
||||
]
|
||||
},
|
||||
externals: [nodeExternals()],
|
||||
module: {
|
||||
rules: [].concat(
|
||||
isCoverage
|
||||
? {
|
||||
test: /\.js$/,
|
||||
include: path.resolve('packages'), // instrument only testing sources with Istanbul, after ts-loader runs
|
||||
loader: 'istanbul-instrumenter-loader',
|
||||
query: {
|
||||
esModules: true
|
||||
}
|
||||
}
|
||||
: [],
|
||||
{
|
||||
test: /\.(jsx?|babel|es6)$/,
|
||||
exclude: /(node_modules|bower_components)/,
|
||||
loader: 'babel-loader'
|
||||
},
|
||||
{
|
||||
test: /\.vue$/,
|
||||
loader: 'vue-loader',
|
||||
options: {
|
||||
compilerOptions: {
|
||||
preserveWhitespace: false
|
||||
},
|
||||
optimizeSSR: false
|
||||
}
|
||||
},
|
||||
{
|
||||
test: /\.css$/,
|
||||
loaders: ['style-loader', 'css-loader']
|
||||
},
|
||||
{
|
||||
test: /\.(svg|otf|ttf|woff2?|eot|gif|png|jpe?g)(\?\S*)?$/,
|
||||
loader: 'url-loader',
|
||||
query: {
|
||||
limit: 10000,
|
||||
name: path.posix.join('static', '[name].[hash:7].[ext]')
|
||||
}
|
||||
}
|
||||
)
|
||||
},
|
||||
plugins: [new VueLoaderPlugin(), new ProgressBarPlugin()],
|
||||
target: 'node',
|
||||
devtool: 'inline-cheap-module-source-map'
|
||||
};
|
||||
|
||||
module.exports = webpackConfig;
|
4
packages/fes-cli/build/helpers/setup.js
Normal file
4
packages/fes-cli/build/helpers/setup.js
Normal file
@ -0,0 +1,4 @@
|
||||
require('jsdom-global')();
|
||||
|
||||
// https://github.com/vuejs/vue-test-utils/issues/936
|
||||
window.Date = Date;
|
38
packages/fes-cli/build/tasks/test.js
Normal file
38
packages/fes-cli/build/tasks/test.js
Normal file
@ -0,0 +1,38 @@
|
||||
const fs = require('fs-extra');
|
||||
const execa = require('execa');
|
||||
const path = require('path');
|
||||
const log = require('../helpers/log');
|
||||
|
||||
module.exports = function (config, rawArgv) {
|
||||
const testDir = path.join(config.folders.PROJECT_DIR, 'test');
|
||||
if (fs.pathExistsSync(testDir)) {
|
||||
const bin = require.resolve('mochapack/bin/mochapack');
|
||||
const argv = [
|
||||
// ...nodeArgs,
|
||||
bin,
|
||||
'--recursive',
|
||||
'--require',
|
||||
require.resolve('../helpers/setup.js'),
|
||||
'--webpack-config',
|
||||
require.resolve('../configs/webpack.test.config.js'),
|
||||
...rawArgv,
|
||||
`${testDir}/**/*.spec.js`
|
||||
];
|
||||
const child = execa('node', argv, {
|
||||
cwd: config.folders.CLI_DIR,
|
||||
encoding: 'utf8',
|
||||
stdio: 'inherit'
|
||||
});
|
||||
child.on('error', (e) => {
|
||||
log.error('[ERROR] test命令执行失败');
|
||||
log.error(JSON.stringify(e));
|
||||
});
|
||||
child.on('exit', (code) => {
|
||||
if (code !== 0) {
|
||||
log.message(`[fes] mochapack进程退出,code ${code}.`);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
log.warn('[WRAN] 测试目录不存在,请在项目根目录创建目录test');
|
||||
}
|
||||
};
|
1500
packages/fes-cli/package-lock.json
generated
1500
packages/fes-cli/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -40,6 +40,7 @@
|
||||
"body-parser": "^1.5.2",
|
||||
"cache-loader": "^4.1.0",
|
||||
"case-sensitive-paths-webpack-plugin": "^2.2.0",
|
||||
"progress-bar-webpack-plugin": "^2.1.0",
|
||||
"chalk": "^4.1.0",
|
||||
"chokidar": "^1.7.0",
|
||||
"clean-webpack-plugin": "^3.0.0",
|
||||
@ -49,7 +50,7 @@
|
||||
"copy-webpack-plugin": "^5.0.4",
|
||||
"cross-spawn": "^2.1.0",
|
||||
"css-loader": "^3.1.0",
|
||||
"execa": "^0.8.0",
|
||||
"execa": "^4.0.3n",
|
||||
"express": "^4.14.0",
|
||||
"express-http-proxy": "^0.10.0",
|
||||
"express-session": "^1.7.2",
|
||||
@ -81,6 +82,10 @@
|
||||
"require-dir": "^0.3.0",
|
||||
"sass-loader": "^10.0.2",
|
||||
"shelljs": "^0.5.3",
|
||||
"jsdom": "^16.4.0",
|
||||
"jsdom-global": "^3.0.2",
|
||||
"mocha": "^7.2.0",
|
||||
"mochapack": "^2.0.5",
|
||||
"string-replace-loader": "^2.2.0",
|
||||
"strip-indent": "^2.0.0",
|
||||
"style-loader": "^1.0.0",
|
||||
@ -99,6 +104,7 @@
|
||||
"webpack-dev-middleware": "^3.7.2",
|
||||
"webpack-hot-middleware": "^2.25.0",
|
||||
"webpack-merge": "^4.2.2",
|
||||
"yargs": "^3.31.0"
|
||||
"yargs": "^3.31.0",
|
||||
"webpack-node-externals": "^2.5.2"
|
||||
}
|
||||
}
|
||||
|
232
packages/fes-template/package-lock.json
generated
232
packages/fes-template/package-lock.json
generated
@ -366,6 +366,17 @@
|
||||
"integrity": "sha512-aYNbO+FZ/3KGeQCEkNhHFRIzBOUgc7QvcVNKXbfnhDkSfwUv91JsQQa10rDgKSTSLkXZ1UIyPe4FJJNVgw1xWQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@vue/test-utils": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.1.0.tgz",
|
||||
"integrity": "sha512-M+3jtVqNYIrvzO5gaxogre5a5+96h0hN/dXw+5Lj0t+dp6fAhYcUjpLrC9j9cEEkl2Rcuh/gKYRUmR5N4vcqPw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"dom-event-types": "^1.0.0",
|
||||
"lodash": "^4.17.15",
|
||||
"pretty": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"@webank/eslint-config-webank": {
|
||||
"version": "0.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@webank/eslint-config-webank/-/eslint-config-webank-0.1.7.tgz",
|
||||
@ -381,9 +392,9 @@
|
||||
}
|
||||
},
|
||||
"@webank/fes-core": {
|
||||
"version": "0.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@webank/fes-core/-/fes-core-0.2.4.tgz",
|
||||
"integrity": "sha512-sBpNzpp5EJrsEh2fx8wQGtYiZdRG0eSWe9cr+LTCtou119zFZ3Ed9Bsth0mgLAx//Z57c0/FyxMsSsK3q2Lrmg==",
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@webank/fes-core/-/fes-core-0.3.0.tgz",
|
||||
"integrity": "sha512-RNwq1R8MshqpkzC2lWIwrEBNnB33BdP0iplEflXNHA2xwx1ccMUfVkVJEv6LIGOHQCCHYNwemDnjsty0mhC1kA==",
|
||||
"requires": {
|
||||
"axios": "^0.16.2",
|
||||
"lodash": "^4.17.15",
|
||||
@ -394,14 +405,20 @@
|
||||
}
|
||||
},
|
||||
"@webank/fes-ui": {
|
||||
"version": "0.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@webank/fes-ui/-/fes-ui-0.2.4.tgz",
|
||||
"integrity": "sha512-ovemdhoY1w65Op7RYnMnGv2IZkj+LD1cMxzyjyb48LhZaQj2ZkO3y8ViLUHVxAUpapEQ2qlCrd5y1IFs9bwefg==",
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@webank/fes-ui/-/fes-ui-0.3.0.tgz",
|
||||
"integrity": "sha512-gTyPS+iABthjCKHKgdOxOfjyeK9WgKb6SK5YcayLCTQDpUPZ3Bb6ckZE9vA1Oiw3d/N1FztxicxKgoUTsgTL8g==",
|
||||
"requires": {
|
||||
"async-validator": "^1.8.2",
|
||||
"xss": "^1.0.7"
|
||||
}
|
||||
},
|
||||
"abbrev": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
||||
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
|
||||
"dev": true
|
||||
},
|
||||
"abs-svg-path": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/abs-svg-path/-/abs-svg-path-0.1.1.tgz",
|
||||
@ -524,6 +541,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"assertion-error": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
|
||||
"integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
|
||||
"dev": true
|
||||
},
|
||||
"astral-regex": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
|
||||
@ -586,6 +609,20 @@
|
||||
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
|
||||
"dev": true
|
||||
},
|
||||
"chai": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz",
|
||||
"integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"assertion-error": "^1.1.0",
|
||||
"check-error": "^1.0.2",
|
||||
"deep-eql": "^3.0.1",
|
||||
"get-func-name": "^2.0.0",
|
||||
"pathval": "^1.1.0",
|
||||
"type-detect": "^4.0.5"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||
@ -603,6 +640,12 @@
|
||||
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
|
||||
"dev": true
|
||||
},
|
||||
"check-error": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
|
||||
"integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
|
||||
"dev": true
|
||||
},
|
||||
"cheerio": {
|
||||
"version": "1.0.0-rc.3",
|
||||
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz",
|
||||
@ -658,6 +701,27 @@
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||
"dev": true
|
||||
},
|
||||
"condense-newlines": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz",
|
||||
"integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"extend-shallow": "^2.0.1",
|
||||
"is-whitespace": "^0.3.0",
|
||||
"kind-of": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"config-chain": {
|
||||
"version": "1.1.12",
|
||||
"resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz",
|
||||
"integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ini": "^1.3.4",
|
||||
"proto-list": "~1.2.1"
|
||||
}
|
||||
},
|
||||
"confusing-browser-globals": {
|
||||
"version": "1.0.9",
|
||||
"resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz",
|
||||
@ -872,6 +936,15 @@
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"deep-eql": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
|
||||
"integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"type-detect": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"deep-is": {
|
||||
"version": "0.1.3",
|
||||
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
|
||||
@ -901,6 +974,12 @@
|
||||
"esutils": "^2.0.2"
|
||||
}
|
||||
},
|
||||
"dom-event-types": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/dom-event-types/-/dom-event-types-1.0.0.tgz",
|
||||
"integrity": "sha512-2G2Vwi2zXTHBGqXHsJ4+ak/iP0N8Ar+G8a7LiD2oup5o4sQWytwqqrZu/O6hIMV0KMID2PL69OhpshLO0n7UJQ==",
|
||||
"dev": true
|
||||
},
|
||||
"dom-serializer": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz",
|
||||
@ -936,6 +1015,18 @@
|
||||
"domelementtype": "1"
|
||||
}
|
||||
},
|
||||
"editorconfig": {
|
||||
"version": "0.15.3",
|
||||
"resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz",
|
||||
"integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"commander": "^2.19.0",
|
||||
"lru-cache": "^4.1.5",
|
||||
"semver": "^5.6.0",
|
||||
"sigmund": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"emoji-regex": {
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
|
||||
@ -1284,6 +1375,15 @@
|
||||
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
|
||||
"dev": true
|
||||
},
|
||||
"extend-shallow": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
|
||||
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-extendable": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"external-editor": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
|
||||
@ -1385,6 +1485,12 @@
|
||||
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
|
||||
"dev": true
|
||||
},
|
||||
"get-func-name": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
|
||||
"integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
|
||||
"dev": true
|
||||
},
|
||||
"gl-matrix": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.3.0.tgz",
|
||||
@ -1516,6 +1622,12 @@
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||
"dev": true
|
||||
},
|
||||
"ini": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
|
||||
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
|
||||
"dev": true
|
||||
},
|
||||
"inquirer": {
|
||||
"version": "6.5.2",
|
||||
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
|
||||
@ -1577,6 +1689,12 @@
|
||||
"integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
|
||||
"dev": true
|
||||
},
|
||||
"is-extendable": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
|
||||
"integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
|
||||
"dev": true
|
||||
},
|
||||
"is-fullwidth-code-point": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
|
||||
@ -1613,6 +1731,12 @@
|
||||
"has-symbols": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"is-whitespace": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz",
|
||||
"integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=",
|
||||
"dev": true
|
||||
},
|
||||
"isarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
|
||||
@ -1625,6 +1749,27 @@
|
||||
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
|
||||
"dev": true
|
||||
},
|
||||
"js-beautify": {
|
||||
"version": "1.13.0",
|
||||
"resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.13.0.tgz",
|
||||
"integrity": "sha512-/Tbp1OVzZjbwzwJQFIlYLm9eWQ+3aYbBXLSaqb1mEJzhcQAfrqMMQYtjb6io+U6KpD0ID4F+Id3/xcjH3l/sqA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"config-chain": "^1.1.12",
|
||||
"editorconfig": "^0.15.3",
|
||||
"glob": "^7.1.3",
|
||||
"mkdirp": "^1.0.4",
|
||||
"nopt": "^5.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"mkdirp": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
|
||||
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"js-tokens": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
||||
@ -1668,6 +1813,15 @@
|
||||
"minimist": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"kind-of": {
|
||||
"version": "3.2.2",
|
||||
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
|
||||
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-buffer": "^1.1.5"
|
||||
}
|
||||
},
|
||||
"levn": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
|
||||
@ -1705,6 +1859,16 @@
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
|
||||
"integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
|
||||
},
|
||||
"lru-cache": {
|
||||
"version": "4.1.5",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
|
||||
"integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"pseudomap": "^1.0.2",
|
||||
"yallist": "^2.1.2"
|
||||
}
|
||||
},
|
||||
"memory-fs": {
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
|
||||
@ -1801,6 +1965,15 @@
|
||||
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
|
||||
"dev": true
|
||||
},
|
||||
"nopt": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
|
||||
"integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"abbrev": "1"
|
||||
}
|
||||
},
|
||||
"normalize-package-data": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
|
||||
@ -2044,6 +2217,12 @@
|
||||
"pify": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"pathval": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz",
|
||||
"integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=",
|
||||
"dev": true
|
||||
},
|
||||
"pify": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
|
||||
@ -2082,6 +2261,17 @@
|
||||
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
|
||||
"dev": true
|
||||
},
|
||||
"pretty": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz",
|
||||
"integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"condense-newlines": "^0.2.1",
|
||||
"extend-shallow": "^2.0.1",
|
||||
"js-beautify": "^1.6.12"
|
||||
}
|
||||
},
|
||||
"process-nextick-args": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
||||
@ -2094,12 +2284,24 @@
|
||||
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
|
||||
"dev": true
|
||||
},
|
||||
"proto-list": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
|
||||
"integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=",
|
||||
"dev": true
|
||||
},
|
||||
"prr": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
|
||||
"integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
|
||||
"dev": true
|
||||
},
|
||||
"pseudomap": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
|
||||
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
|
||||
"dev": true
|
||||
},
|
||||
"punycode": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
||||
@ -2240,6 +2442,12 @@
|
||||
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
|
||||
"dev": true
|
||||
},
|
||||
"sigmund": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
|
||||
"integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
|
||||
"dev": true
|
||||
},
|
||||
"signal-exit": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
|
||||
@ -2518,6 +2726,12 @@
|
||||
"prelude-ls": "~1.1.2"
|
||||
}
|
||||
},
|
||||
"type-detect": {
|
||||
"version": "4.0.8",
|
||||
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
|
||||
"integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
|
||||
"dev": true
|
||||
},
|
||||
"uri-js": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz",
|
||||
@ -2624,6 +2838,12 @@
|
||||
"commander": "^2.20.3",
|
||||
"cssfilter": "0.0.10"
|
||||
}
|
||||
},
|
||||
"yallist": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
|
||||
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,8 @@
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"build": "fes build",
|
||||
"dev": "fes dev"
|
||||
"dev": "fes dev",
|
||||
"test": "fes test:unit"
|
||||
},
|
||||
"keywords": [
|
||||
"管理端",
|
||||
@ -30,7 +31,9 @@
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@webank/eslint-config-webank": "^0.1.4",
|
||||
"csp-html-webpack-plugin": "^4.0.0"
|
||||
"csp-html-webpack-plugin": "^4.0.0",
|
||||
"chai": "^4.2.0",
|
||||
"@vue/test-utils": "^1.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@antv/data-set": "^0.11.7",
|
||||
|
21
packages/fes-template/src/components/Counter.vue
Normal file
21
packages/fes-template/src/components/Counter.vue
Normal file
@ -0,0 +1,21 @@
|
||||
<template>
|
||||
<div>
|
||||
{{count}}
|
||||
<button @click="increment">Increment</button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
count: 0
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
increment() {
|
||||
this.count++;
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
13
packages/fes-template/test/Counter.spec.js
Normal file
13
packages/fes-template/test/Counter.spec.js
Normal file
@ -0,0 +1,13 @@
|
||||
import Vue from 'vue';
|
||||
import { shallowMount } from '@vue/test-utils';
|
||||
import { expect } from 'chai';
|
||||
import Counter from '../src/components/Counter.vue';
|
||||
|
||||
describe('Counter.vue', () => {
|
||||
it('increments count when button is clicked', async () => {
|
||||
const wrapper = shallowMount(Counter);
|
||||
wrapper.find('button').trigger('click');
|
||||
await Vue.nextTick();
|
||||
expect(wrapper.find('div').text()).contains('1');
|
||||
});
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user