From 065c5e9635e97b43feaf5345086069300e5b938d Mon Sep 17 00:00:00 2001 From: Pan Date: Fri, 26 Oct 2018 11:29:14 +0800 Subject: [PATCH] add unit test --- .gitignore | 1 + jest.config.js | 24 ++++++ package.json | 23 +++--- src/components/Hamburger/index.vue | 9 ++- src/utils/index.js | 6 +- src/views/layout/components/Navbar.vue | 2 +- tests/unit/.eslintrc.js | 5 ++ tests/unit/components/Breadcrumb.spec.js | 93 ++++++++++++++++++++++++ tests/unit/components/Hamburger.spec.js | 18 +++++ tests/unit/components/SvgIcon.spec.js | 22 ++++++ tests/unit/utils/formatTime.spec.js | 27 +++++++ tests/unit/utils/parseTime.spec.js | 27 +++++++ tests/unit/utils/validate.spec.js | 28 +++++++ 13 files changed, 270 insertions(+), 15 deletions(-) create mode 100644 jest.config.js create mode 100644 tests/unit/.eslintrc.js create mode 100644 tests/unit/components/Breadcrumb.spec.js create mode 100644 tests/unit/components/Hamburger.spec.js create mode 100644 tests/unit/components/SvgIcon.spec.js create mode 100644 tests/unit/utils/formatTime.spec.js create mode 100644 tests/unit/utils/parseTime.spec.js create mode 100644 tests/unit/utils/validate.spec.js diff --git a/.gitignore b/.gitignore index 78a0ead..9ad28d2 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ npm-debug.log* yarn-debug.log* yarn-error.log* package-lock.json +tests/**/coverage/ # Editor directories and files .idea diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..c8565b7 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,24 @@ +module.exports = { + verbose: true, + moduleFileExtensions: ['js', 'jsx', 'json', 'vue'], + transform: { + '^.+\\.vue$': 'vue-jest', + '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub', + '^.+\\.jsx?$': 'babel-jest' + }, + moduleNameMapper: { + '^@/(.*)$': '/src/$1' + }, + snapshotSerializers: ['jest-serializer-vue'], + testMatch: [ + '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)' + ], + collectCoverageFrom: ['src/utils/**/*.{js,vue}', '!src/utils/auth.js', '!src/utils/request.js', 'src/components/**/*.{js,vue}'], + coverageDirectory: '/tests/unit/coverage', + 'collectCoverage': true, + 'coverageReporters': [ + 'lcov', + 'text-summary' + ], + testURL: 'http://localhost/' +} diff --git a/package.json b/package.json index 2a087c3..034de5a 100644 --- a/package.json +++ b/package.json @@ -1,17 +1,17 @@ { "name": "vue-admin-template", "version": "3.8.0", - "license": "MIT", "description": "A vue admin template with Element UI & axios & iconfont & permission control & lint", "author": "Pan ", "scripts": { "dev": "vue-cli-service serve", "build": "node build/index.js", - "build:report": "node build/index.js --report", "build:preview": "node build/index.js --preview", + "build:report": "node build/index.js --report", + "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml", "lint": "vue-cli-service lint", - "test": "npm run lint", - "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" + "test:unit": "vue-cli-service test:unit", + "test": "npm run lint && npm run test:unit" }, "dependencies": { "axios": "0.18.0", @@ -27,7 +27,11 @@ "devDependencies": { "@vue/cli-plugin-babel": "3.0.5", "@vue/cli-plugin-eslint": "3.0.5", + "@vue/cli-plugin-unit-jest": "3.0.5", "@vue/cli-service": "3.0.5", + "@vue/test-utils": "1.0.0-beta.20", + "babel-core": "7.0.0-bridge.0", + "babel-jest": "23.6.0", "chalk": "2.4.1", "connect": "3.6.6", "node-sass": "^4.9.3", @@ -40,13 +44,14 @@ "svgo": "1.0.5", "vue-template-compiler": "2.5.17" }, - "engines": { - "node": ">= 8.9", - "npm": ">= 3.0.0" - }, "browserslist": [ "> 1%", "last 2 versions", "not ie <= 8" - ] + ], + "engines": { + "node": ">= 8.9", + "npm": ">= 3.0.0" + }, + "license": "MIT" } diff --git a/src/components/Hamburger/index.vue b/src/components/Hamburger/index.vue index f1f9bda..e358bb5 100644 --- a/src/components/Hamburger/index.vue +++ b/src/components/Hamburger/index.vue @@ -33,10 +33,11 @@ export default { isActive: { type: Boolean, default: false - }, - toggleClick: { - type: Function, - default: null + } + }, + methods: { + toggleClick() { + this.$emit('toggleClick') } } } diff --git a/src/utils/index.js b/src/utils/index.js index 0f14aed..b4512bc 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -36,7 +36,11 @@ export function parseTime(time, cFormat) { } export function formatTime(time, option) { - time = +time * 1000 + if (('' + time).length === 10) { + time = parseInt(time) * 1000 + } else { + time = +time + } const d = new Date(time) const now = Date.now() diff --git a/src/views/layout/components/Navbar.vue b/src/views/layout/components/Navbar.vue index e9325d0..c330190 100644 --- a/src/views/layout/components/Navbar.vue +++ b/src/views/layout/components/Navbar.vue @@ -1,6 +1,6 @@