瀏覽代碼

unit test vm destroy improve (#791)

baiyaaaaa 8 年之前
父節點
當前提交
22ba941fa0

+ 9 - 5
test/unit/specs/autocomplete.spec.js

@@ -1,8 +1,12 @@
-import { createVue } from '../util';
+import { createVue, destroyVM } from '../util';
 
 describe('Autocomplete', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
   it('create', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-autocomplete
           v-model="state"
@@ -58,7 +62,7 @@ describe('Autocomplete', () => {
     }, 500);
   });
   it('select', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-autocomplete
           v-model="state"
@@ -118,7 +122,7 @@ describe('Autocomplete', () => {
     }, 500);
   });
   it('highlight', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-autocomplete
           ref="autocomplete"
@@ -198,7 +202,7 @@ describe('Autocomplete', () => {
     }, 500);
   });
   it('highlight out of bounds', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-autocomplete
           ref="autocomplete"

+ 14 - 6
test/unit/specs/badge.spec.js

@@ -1,13 +1,19 @@
-import { createTest, createVue } from '../util';
+import { createTest, createVue, destroyVM } from '../util';
 import Badge from 'packages/badge';
 
 describe('Badge', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('value', () => {
-    expect(createTest(Badge, { value: 80 }).content).to.equal(80);
+    vm = createTest(Badge, { value: 80 });
+    expect(vm.content).to.equal(80);
   });
 
   it('is fixed', () => {
-    const vm = createVue(`
+    vm = createVue(`
       <el-badge>
         <button>click</button>
       </el-badge>
@@ -17,7 +23,7 @@ describe('Badge', () => {
   });
 
   it('is dot', () => {
-    const vm = createVue(`
+    vm = createVue(`
       <el-badge is-dot>
         <button>click</button>
       </el-badge>
@@ -27,7 +33,9 @@ describe('Badge', () => {
   });
 
   it('max', () => {
-    expect(createTest(Badge, { max: 100, value: 200 }).content).to.equal('100+');
-    expect(createTest(Badge, { max: 100, value: 80 }).content).to.equal(80);
+    vm = createTest(Badge, { max: 100, value: 200 });
+    expect(vm.content).to.equal('100+');
+    vm = createTest(Badge, { max: 100, value: 80 });
+    expect(vm.content).to.equal(80);
   });
 });

+ 7 - 2
test/unit/specs/breadcrumb.spec.js

@@ -1,8 +1,13 @@
-import { createVue } from '../util';
+import { createVue, destroyVM } from '../util';
 
 describe('Breadcrumb', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('create', done => {
-    const vm = createVue(`
+    vm = createVue(`
       <el-breadcrumb separator=">">
         <el-breadcrumb-item to="/">首页</el-breadcrumb-item>
         <el-breadcrumb-item>活动管理</el-breadcrumb-item>

+ 13 - 16
test/unit/specs/button.spec.js

@@ -2,66 +2,64 @@ import { createTest, createVue, destroyVM } from '../util';
 import Button from 'packages/button';
 
 describe('Button', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('create', () => {
-    const vm = createTest(Button, {
+    vm = createTest(Button, {
       type: 'primary'
     }, true);
     let buttonElm = vm.$el;
     expect(buttonElm.classList.contains('el-button--primary')).to.be.true;
-    destroyVM(vm);
   });
   it('icon', () => {
-    const vm = createTest(Button, {
+    vm = createTest(Button, {
       icon: 'search'
     }, true);
     let buttonElm = vm.$el;
     expect(buttonElm.querySelector('.el-icon-search')).to.be.ok;
-    destroyVM(vm);
   });
   it('nativeType', () => {
-    const vm = createTest(Button, {
+    vm = createTest(Button, {
       nativeType: 'submit'
     }, true);
     let buttonElm = vm.$el;
     expect(buttonElm.getAttribute('type')).to.be.equal('submit');
-    destroyVM(vm);
   });
   it('loading', () => {
-    const vm = createTest(Button, {
+    vm = createTest(Button, {
       loading: true
     }, true);
     let buttonElm = vm.$el;
     expect(buttonElm.classList.contains('is-loading')).to.be.true;
     expect(buttonElm.querySelector('.el-icon-loading')).to.be.ok;
-    destroyVM(vm);
   });
   it('disabled', () => {
-    const vm = createTest(Button, {
+    vm = createTest(Button, {
       disabled: true
     }, true);
     let buttonElm = vm.$el;
     expect(buttonElm.classList.contains('is-disabled')).to.be.true;
-    destroyVM(vm);
   });
   it('size', () => {
-    const vm = createTest(Button, {
+    vm = createTest(Button, {
       size: 'large'
     }, true);
     let buttonElm = vm.$el;
     expect(buttonElm.classList.contains('el-button--large')).to.be.true;
-    destroyVM(vm);
   });
   it('plain', () => {
-    const vm = createTest(Button, {
+    vm = createTest(Button, {
       plain: true
     }, true);
     let buttonElm = vm.$el;
     expect(buttonElm.classList.contains('is-plain')).to.be.true;
-    destroyVM(vm);
   });
   it('click', done => {
     let result;
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-button @click="handleClick"></el-button>
       `,
@@ -75,7 +73,6 @@ describe('Button', () => {
 
     setTimeout(_ => {
       expect(result).to.exist;
-      destroyVM(vm);
       done();
     }, 20);
   });

+ 9 - 4
test/unit/specs/card.spec.js

@@ -1,9 +1,14 @@
-import { createVue, createTest } from '../util';
+import { createVue, createTest, destroyVM } from '../util';
 import Card from 'packages/card';
 
 describe('Card', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('slot:header', () => {
-    const vm = createVue(`
+    vm = createVue(`
       <el-card>
         <header slot="header">二师兄叫我埋梗 啦啦啦</header>
       </el-card>
@@ -13,7 +18,7 @@ describe('Card', () => {
   });
 
   it('header', () => {
-    const vm = createTest(Card, {
+    vm = createTest(Card, {
       header: '好烦'
     });
 
@@ -21,7 +26,7 @@ describe('Card', () => {
   });
 
   it('bodyStyle', () => {
-    const vm = createTest(Card, {
+    vm = createTest(Card, {
       bodyStyle: { padding: '10px' }
     });
 

+ 11 - 6
test/unit/specs/checkbox.spec.js

@@ -1,8 +1,13 @@
-import { createVue } from '../util';
+import { createVue, destroyVM } from '../util';
 
 describe('Checkbox', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('create', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-checkbox v-model="checked">
         </el-checkbox>
@@ -22,7 +27,7 @@ describe('Checkbox', () => {
     });
   });
   it('disabled', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-checkbox
           v-model="checked"
@@ -40,7 +45,7 @@ describe('Checkbox', () => {
     expect(checkboxElm.querySelector('.is-disabled')).to.be.ok;
   });
   it('checkbox group', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-checkbox-group v-model="checkList">
           <el-checkbox label="a" ref="a"></el-checkbox>
@@ -63,7 +68,7 @@ describe('Checkbox', () => {
     });
   });
   it('true false label', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-checkbox true-label="a" :false-label="3" v-model="checked"></el-checkbox>
       `,
@@ -80,7 +85,7 @@ describe('Checkbox', () => {
     });
   });
   it('checked', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <div>
           <el-checkbox v-model="checked" checked></el-checkbox>

+ 11 - 6
test/unit/specs/col.spec.js

@@ -1,8 +1,13 @@
-import { createVue } from '../util';
+import { createVue, destroyVM } from '../util';
 
 describe('Col', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('create', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-col :span="12">
         </el-col>
@@ -12,7 +17,7 @@ describe('Col', () => {
     expect(colElm.classList.contains('el-col')).to.be.true;
   });
   it('span', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-col :span="12">
         </el-col>
@@ -22,7 +27,7 @@ describe('Col', () => {
     expect(colElm.classList.contains('el-col-12')).to.be.true;
   });
   it('pull', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-col :span="12" :pull="3">
         </el-col>
@@ -32,7 +37,7 @@ describe('Col', () => {
     expect(colElm.classList.contains('el-col-pull-3')).to.be.true;
   });
   it('push', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-col :span="12" :push="3">
         </el-col>
@@ -42,7 +47,7 @@ describe('Col', () => {
     expect(colElm.classList.contains('el-col-push-3')).to.be.true;
   });
   it('gutter', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-row :gutter="20">
           <el-col :span="12" ref="col">

+ 12 - 7
test/unit/specs/date-picker.spec.js

@@ -4,8 +4,13 @@ import DatePicker from 'packages/date-picker';
 const DELAY = 10;
 
 describe('DatePicker', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('create', () => {
-    const vm = createTest(DatePicker, {
+    vm = createTest(DatePicker, {
       readonly: true,
       placeholder: '23333',
       format: 'HH-mm-ss'
@@ -17,7 +22,7 @@ describe('DatePicker', () => {
   });
 
   it('select date', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-date-picker ref="compo" v-model="value"></el-date-picker>
       `,
@@ -62,7 +67,7 @@ describe('DatePicker', () => {
   });
 
   describe('keydown', () => {
-    let vm, input;
+    let input;
     let keyDown = function(el, keyCode) {
       const evt = document.createEvent('Events');
 
@@ -113,7 +118,7 @@ describe('DatePicker', () => {
   });
 
   it('type:month', done => {
-    const vm = createTest(DatePicker, {
+    vm = createTest(DatePicker, {
       type: 'month'
     }, true);
     const input = vm.$el.querySelector('input');
@@ -131,7 +136,7 @@ describe('DatePicker', () => {
   });
 
   it('type:year', done => {
-    const vm = createTest(DatePicker, {
+    vm = createTest(DatePicker, {
       type: 'year'
     }, true);
     const input = vm.$el.querySelector('input');
@@ -301,7 +306,7 @@ describe('DatePicker', () => {
   });
 
   it('type:daterange', done => {
-    const vm = createTest(DatePicker, {
+    vm = createTest(DatePicker, {
       type: 'daterange'
     }, true);
     const input = vm.$el.querySelector('input');
@@ -557,7 +562,7 @@ describe('DatePicker', () => {
 
   it('picker-options:shortcuts', done => {
     let test;
-    const vm = createTest(DatePicker, {
+    vm = createTest(DatePicker, {
       pickerOptions: {
         shortcuts: [
           {

+ 9 - 4
test/unit/specs/dropdown.spec.js

@@ -1,8 +1,13 @@
 import { createVue, triggerEvent, destroyVM } from '../util';
 
 describe('Dropdown', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('create', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-dropdown ref="dropdown">
           <span class="el-dropdown-link">
@@ -35,7 +40,7 @@ describe('Dropdown', () => {
     }, 400);
   });
   it('menu click', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-dropdown ref="dropdown">
           <span class="el-dropdown-link">
@@ -70,7 +75,7 @@ describe('Dropdown', () => {
     }, 300);
   });
   it('trigger', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-dropdown trigger="click" ref="dropdown">
           <span class="el-dropdown-link">
@@ -103,7 +108,7 @@ describe('Dropdown', () => {
     });
   });
   it('split button', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-dropdown split-button type="primary" ref="dropdown">
           更多菜单

+ 20 - 15
test/unit/specs/form.spec.js

@@ -1,8 +1,13 @@
-import { createVue } from '../util';
+import { createVue, destroyVM } from '../util';
 
 describe('Form', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('label width', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-form ref="form" :model="form" label-width="80px">
           <el-form-item label="活动名称">
@@ -23,7 +28,7 @@ describe('Form', () => {
     done();
   });
   it('inline form', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-form ref="form" :model="form" inline>
           <el-form-item>
@@ -47,7 +52,7 @@ describe('Form', () => {
     done();
   });
   it('label position', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <div>
           <el-form :model="form" label-position="top" ref="labelTop">
@@ -82,7 +87,7 @@ describe('Form', () => {
     done();
   });
   it('reset field', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-form ref="form" :model="form" :rules="rules">
           <el-form-item label="活动名称" prop="name">
@@ -139,7 +144,7 @@ describe('Form', () => {
     });
   });
   it('form item nest', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-form ref="form" :model="form" :rules="rules">
           <el-form-item label="活动时间" required>
@@ -184,7 +189,7 @@ describe('Form', () => {
   });
   describe('validate', () => {
     it('input', done => {
-      const vm = createVue({
+      vm = createVue({
         template: `
           <el-form :model="form" :rules="rules" ref="form">
             <el-form-item label="活动名称" prop="name">
@@ -230,7 +235,7 @@ describe('Form', () => {
       });
     });
     it('textarea', done => {
-      const vm = createVue({
+      vm = createVue({
         template: `
           <el-form :model="form" :rules="rules" ref="form">
             <el-form-item label="活动名称" prop="name">
@@ -276,7 +281,7 @@ describe('Form', () => {
       });
     });
     it('selector', done => {
-      const vm = createVue({
+      vm = createVue({
         template: `
           <el-form :model="form" :rules="rules" ref="form">
             <el-form-item label="记住密码" prop="region">
@@ -321,7 +326,7 @@ describe('Form', () => {
       });
     });
     it('datepicker', done => {
-      const vm = createVue({
+      vm = createVue({
         template: `
           <el-form :model="form" :rules="rules" ref="form">
             <el-form-item label="记住密码" prop="date">
@@ -363,7 +368,7 @@ describe('Form', () => {
       });
     });
     it('timepicker', done => {
-      const vm = createVue({
+      vm = createVue({
         template: `
           <el-form :model="form" :rules="rules" ref="form">
             <el-form-item label="记住密码" prop="date">
@@ -404,7 +409,7 @@ describe('Form', () => {
       });
     });
     it('checkbox group', done => {
-      const vm = createVue({
+      vm = createVue({
         template: `
           <el-form :model="form" :rules="rules" ref="form">
             <el-form-item label="活动名称" prop="type">
@@ -450,7 +455,7 @@ describe('Form', () => {
       });
     });
     it('radio group', done => {
-      const vm = createVue({
+      vm = createVue({
         template: `
           <el-form :model="form" :rules="rules" ref="form">
             <el-form-item label="活动名称" prop="type">
@@ -494,7 +499,7 @@ describe('Form', () => {
       });
     });
     it('validate field', done => {
-      const vm = createVue({
+      vm = createVue({
         template: `
           <el-form :model="form" :rules="rules" ref="form">
             <el-form-item label="活动名称" prop="name">
@@ -533,7 +538,7 @@ describe('Form', () => {
           callback();
         }
       };
-      const vm = createVue({
+      vm = createVue({
         template: `
           <el-form :model="form" :rules="rules" ref="form">
             <el-form-item label="活动名称" prop="name">

+ 11 - 14
test/unit/specs/input-number.spec.js

@@ -1,8 +1,12 @@
 import { createVue, triggerEvent, destroyVM } from '../util';
 
 describe('InputNumber', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
   it('create', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-input-number v-model="value">
         </el-input-number>
@@ -17,10 +21,9 @@ describe('InputNumber', () => {
 
     expect(vm.value).to.be.equal(1);
     expect(input.value).to.be.equal('1');
-    destroyVM(vm);
   });
   it('decrease', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-input-number v-model="value" ref="input">
         </el-input-number>
@@ -48,13 +51,12 @@ describe('InputNumber', () => {
 
       vm.$nextTick(_ => {
         expect(vm.$el.querySelector('.el-input.is-active')).to.not.exist;
-        destroyVM(vm);
         done();
       });
     }, 300);
   });
   it('increase', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-input-number v-model="value">
         </el-input-number>
@@ -75,12 +77,11 @@ describe('InputNumber', () => {
     setTimeout(_ => {
       expect(vm.value).to.be.equal(2.5);
       expect(input.value).to.be.equal('2.5');
-      destroyVM(vm);
       done();
     }, 100);
   });
   it('disabled', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-input-number v-model="value" disabled>
         </el-input-number>
@@ -109,13 +110,12 @@ describe('InputNumber', () => {
       setTimeout(_ => {
         expect(vm.value).to.be.equal(2);
         expect(input.value).to.be.equal('2');
-        destroyVM(vm);
         done();
       }, 100);
     }, 100);
   });
   it('step', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-input-number v-model="value" :step="3.2">
         </el-input-number>
@@ -144,13 +144,12 @@ describe('InputNumber', () => {
       setTimeout(_ => {
         expect(vm.value).to.be.equal(5);
         expect(input.value).to.be.equal('5');
-        destroyVM(vm);
         done();
       }, 100);
     }, 100);
   });
   it('min', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-input-number v-model="value" :min="6">
         </el-input-number>
@@ -185,12 +184,11 @@ describe('InputNumber', () => {
     setTimeout(_ => {
       expect(vm.value).to.be.equal(6);
       expect(input.value).to.be.equal('6');
-      destroyVM(vm);
       done();
     }, 100);
   });
   it('max', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-input-number v-model="value" :max="8">
         </el-input-number>
@@ -225,7 +223,6 @@ describe('InputNumber', () => {
     setTimeout(_ => {
       expect(vm.value).to.be.equal(8);
       expect(input.value).to.be.equal('8');
-      destroyVM(vm);
       done();
     }, 100);
   });

+ 13 - 8
test/unit/specs/input.spec.js

@@ -1,8 +1,13 @@
-import { createVue } from '../util';
+import { createVue, destroyVM } from '../util';
 
 describe('Input', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('create', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-input
           :minlength="3"
@@ -33,7 +38,7 @@ describe('Input', () => {
   });
 
   it('disabled', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-input disabled>
         </el-input>
@@ -43,7 +48,7 @@ describe('Input', () => {
   });
 
   it('icon', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-input
           icon="time"
@@ -69,7 +74,7 @@ describe('Input', () => {
   });
 
   it('size', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-input size="large">
         </el-input>
@@ -80,7 +85,7 @@ describe('Input', () => {
   });
 
   it('type', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-input type="textarea">
         </el-input>
@@ -91,7 +96,7 @@ describe('Input', () => {
   });
 
   it('rows', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-input type="textarea" :rows="3">
         </el-input>
@@ -100,7 +105,7 @@ describe('Input', () => {
     expect(vm.$el.querySelector('.el-textarea__inner').getAttribute('rows')).to.be.equal('3');
   });
   it('autosize', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <div>
           <el-input

+ 10 - 5
test/unit/specs/loading.spec.js

@@ -1,9 +1,14 @@
-import { createVue } from '../util';
+import { createVue, destroyVM } from '../util';
 import Vue from 'vue';
 
 describe('Loading', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('create', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <div v-loading="loading"></div>
       `,
@@ -65,7 +70,7 @@ describe('Loading', () => {
   });
 
   it('body', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <div v-loading.body="loading"></div>
       `,
@@ -87,7 +92,7 @@ describe('Loading', () => {
   });
 
   it('fullscreen', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <div v-loading.fullscreen="loading"></div>
       `,
@@ -112,7 +117,7 @@ describe('Loading', () => {
   });
 
   it('lock', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <div v-loading.fullscreen.lock="loading"></div>
       `,

+ 18 - 13
test/unit/specs/menu.spec.js

@@ -1,8 +1,13 @@
-import { createVue, triggerEvent } from '../util';
+import { createVue, triggerEvent, destroyVM } from '../util';
 
 describe('Menu', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('create', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-menu>
           <el-menu-item index="1" ref="item1">处理中心</el-menu-item>
@@ -23,7 +28,7 @@ describe('Menu', () => {
     });
   });
   it('default active', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-menu default-active="2">
           <el-menu-item index="1" ref="item1">处理中心</el-menu-item>
@@ -39,7 +44,7 @@ describe('Menu', () => {
     });
   });
   it('active watch', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-menu :default-active="active">
           <el-menu-item index="1" ref="item1">active watch处理中心</el-menu-item>
@@ -61,7 +66,7 @@ describe('Menu', () => {
     }, 100);
   });
   it('default active in submenu', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-menu default-active="2-2">
           <el-menu-item index="1" ref="item1">处理中心</el-menu-item>
@@ -83,7 +88,7 @@ describe('Menu', () => {
     });
   });
   it('submenu', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-menu>
           <el-menu-item index="1" ref="item1">处理中心</el-menu-item>
@@ -118,7 +123,7 @@ describe('Menu', () => {
     });
   });
   it('submenu default opened', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-menu theme="dark" :default-openeds="defaultOpeneds">
           <el-menu-item index="1">default opened处理中心</el-menu-item>
@@ -152,7 +157,7 @@ describe('Menu', () => {
     });
   });
   it('theme', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-menu theme="dark">
           <el-menu-item index="1" ref="item1">处理中心</el-menu-item>
@@ -167,7 +172,7 @@ describe('Menu', () => {
     expect(vm.$el.classList.contains('el-menu--dark')).to.be.true;
   });
   it('unique-opened', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-menu theme="dark" unique-opened default-active="2-2">
           <el-menu-item index="1">处理中心</el-menu-item>
@@ -198,7 +203,7 @@ describe('Menu', () => {
     });
   });
   it('horizontal mode', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-menu mode="horizontal">
           <el-menu-item index="1">处理中心</el-menu-item>
@@ -229,7 +234,7 @@ describe('Menu', () => {
     }, 500);
   });
   it('menu trigger click', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-menu mode="horizontal" menu-trigger="click">
           <el-menu-item index="1">处理中心</el-menu-item>
@@ -264,7 +269,7 @@ describe('Menu', () => {
     }, 500);
   });
   it('horizontal submenu active', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-menu mode="horizontal">
           <el-menu-item index="1">处理中心</el-menu-item>
@@ -286,7 +291,7 @@ describe('Menu', () => {
     });
   });
   it('menu group', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-menu mode="vertical" default-active="1">
           <el-menu-item-group title="分组一" ref="group1">

+ 22 - 18
test/unit/specs/pagination.spec.js

@@ -1,9 +1,13 @@
-import { createTest, createVue, triggerEvent } from '../util';
+import { createTest, createVue, triggerEvent, destroyVM } from '../util';
 import Pagination from 'packages/pagination';
 
 describe('Pagination', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
   it('create', () => {
-    const vm = createTest(Pagination);
+    vm = createTest(Pagination);
     const elm = vm.$el;
     // prev
     expect(elm.querySelector('button.btn-prev')).to.exist;
@@ -20,7 +24,7 @@ describe('Pagination', () => {
   });
 
   it('set layout', () => {
-    const vm = createTest(Pagination, {
+    vm = createTest(Pagination, {
       layout: 'prev, pager, next'
     });
     const elm = vm.$el;
@@ -39,14 +43,14 @@ describe('Pagination', () => {
   });
 
   it('small', () => {
-    const vm = createTest(Pagination, {
+    vm = createTest(Pagination, {
       small: true
     });
     expect(vm.$el.classList.contains('el-pagination--small')).to.true;
   });
 
   it('pageSize', () => {
-    const vm = createTest(Pagination, {
+    vm = createTest(Pagination, {
       pageSize: 25,
       total: 100
     });
@@ -55,7 +59,7 @@ describe('Pagination', () => {
   });
 
   it('currentPage', () => {
-    const vm = createTest(Pagination, {
+    vm = createTest(Pagination, {
       pageSize: 20,
       total: 200,
       currentPage: 3
@@ -65,7 +69,7 @@ describe('Pagination', () => {
   });
 
   it('pageSizes', () => {
-    const vm = createTest(Pagination, {
+    vm = createTest(Pagination, {
       pageSizes: [10, 15, 35, 50],
       pageSize: 35,
       total: 1000,
@@ -79,7 +83,7 @@ describe('Pagination', () => {
   });
 
   it('pageSizes:not found pageSize', () => {
-    const vm = createTest(Pagination, {
+    vm = createTest(Pagination, {
       pageSizes: [10, 15, 35, 50],
       pageSize: 24,
       total: 1000,
@@ -90,7 +94,7 @@ describe('Pagination', () => {
   });
 
   it('layout is empty', () => {
-    const vm = createTest(Pagination, {
+    vm = createTest(Pagination, {
       layout: ''
     });
 
@@ -98,7 +102,7 @@ describe('Pagination', () => {
   });
 
   it('jumper: change value', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-pagination
           @current-change="handleChange"
@@ -133,7 +137,7 @@ describe('Pagination', () => {
   });
 
   it('event:current-change', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-pagination
           :total="1000"
@@ -159,7 +163,7 @@ describe('Pagination', () => {
   });
 
   it('event:size-change', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-pagination
           :total="100"
@@ -182,7 +186,7 @@ describe('Pagination', () => {
   });
 
   it('pageSize > total', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-pagination
           @current-change="handleChange"
@@ -213,7 +217,7 @@ describe('Pagination', () => {
 
   describe('click pager', () => {
     it('click ul', () => {
-      const vm = createTest(Pagination, {
+      vm = createTest(Pagination, {
         total: 1000
       }, true);
 
@@ -222,7 +226,7 @@ describe('Pagination', () => {
     });
 
     it('click li', () => {
-      const vm = createTest(Pagination, {
+      vm = createTest(Pagination, {
         total: 1000
       }, true);
 
@@ -231,7 +235,7 @@ describe('Pagination', () => {
     });
 
     it('click next icon-more', () => {
-      const vm = createTest(Pagination, {
+      vm = createTest(Pagination, {
         total: 1000
       }, true);
 
@@ -240,7 +244,7 @@ describe('Pagination', () => {
     });
 
     it('click prev icon-more', done => {
-      const vm = createTest(Pagination, {
+      vm = createTest(Pagination, {
         total: 1000
       }, true);
 
@@ -254,7 +258,7 @@ describe('Pagination', () => {
     });
 
     it('click last page', done => {
-      const vm = createTest(Pagination, {
+      vm = createTest(Pagination, {
         total: 1000
       }, true);
       const nodes = vm.$el.querySelectorAll('li.number');

+ 13 - 8
test/unit/specs/popover.spec.js

@@ -1,7 +1,12 @@
-import { createVue, triggerEvent, createTest } from '../util';
+import { createVue, triggerEvent, createTest, destroyVM } from '../util';
 import Popover, { directive } from 'packages/popover';
 
 describe('Popover', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   describe('trigger', () => {
     const createVM = (trigger) => {
       return createVue(`
@@ -17,7 +22,7 @@ describe('Popover', () => {
     };
 
     it('click', () => {
-      const vm = createVM('click');
+      vm = createVM('click');
       const compo = vm.$refs.popover;
 
       vm.$el.querySelector('button').click();
@@ -27,7 +32,7 @@ describe('Popover', () => {
     });
 
     it('hover', done => {
-      const vm = createVM('hover');
+      vm = createVM('hover');
       const compo = vm.$refs.popover;
       const button = vm.$el.querySelector('button');
 
@@ -41,7 +46,7 @@ describe('Popover', () => {
     });
 
     it('focus input in children node', () => {
-      const vm = createVue(`
+      vm = createVue(`
         <div>
           <el-popover
             ref="popover"
@@ -63,7 +68,7 @@ describe('Popover', () => {
     });
 
     it('focus textarea in children node', () => {
-      const vm = createVue(`
+      vm = createVue(`
         <div>
           <el-popover
             ref="popover"
@@ -85,7 +90,7 @@ describe('Popover', () => {
     });
 
     it('focus input', () => {
-      const vm = createVue(`
+      vm = createVue(`
         <div>
           <el-popover
             ref="popover"
@@ -105,7 +110,7 @@ describe('Popover', () => {
     });
 
     it('focus button', () => {
-      const vm = createVM('focus');
+      vm = createVM('focus');
       const compo = vm.$refs.popover;
       const button = vm.$el.querySelector('button');
 
@@ -187,7 +192,7 @@ describe('Popover', () => {
   });
 
   it('destroy event', () => {
-    const vm = createTest(Popover, {
+    vm = createTest(Popover, {
       reference: document.createElement('div'),
       popper: document.createElement('div')
     });

+ 13 - 8
test/unit/specs/progress.spec.js

@@ -1,8 +1,13 @@
-import { createVue } from '../util';
+import { createVue, destroyVM } from '../util';
 
 describe('Progress', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('create', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <div>
           <el-progress ref="percent0" :percentage="0"></el-progress>
@@ -21,7 +26,7 @@ describe('Progress', () => {
     expect(vm.$refs.percent100.$el.querySelector('.el-progress-bar__inner').style.width).to.be.equal('100%');
   });
   it('status', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <div>
           <el-progress ref="lineSuccess" :percentage="100" status="success"></el-progress>
@@ -42,7 +47,7 @@ describe('Progress', () => {
     expect(vm.$refs.circleException.$el.querySelector('.el-progress__text .el-icon-close')).to.be.exist;
   });
   it('text inside', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-progress :percentage="50" text-inside></el-progress>
       `
@@ -50,7 +55,7 @@ describe('Progress', () => {
     expect(vm.$el.classList.contains('el-progress--text-inside')).to.be.true;
   });
   it('stroke width', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-progress :percentage="50" :stroke-width="8"></el-progress>
       `
@@ -58,7 +63,7 @@ describe('Progress', () => {
     expect(vm.$el.querySelector('.el-progress-bar__outer').style.height).to.be.equal('8px');
   });
   it('show text', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-progress :percentage="50" :show-text="false"></el-progress>
       `
@@ -66,7 +71,7 @@ describe('Progress', () => {
     expect(vm.$el.querySelector('.el-progress__text')).to.not.exist;
   });
   it('circle', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-progress type="circle" :percentage="50"></el-progress>
       `
@@ -74,7 +79,7 @@ describe('Progress', () => {
     expect(vm.$el.classList.contains('el-progress--circle')).to.be.true;
   });
   it('width', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-progress type="circle" :percentage="50" :width="120"></el-progress>
       `

+ 10 - 5
test/unit/specs/radio.spec.js

@@ -1,8 +1,13 @@
-import { createVue } from '../util';
+import { createVue, destroyVM } from '../util';
 
 describe('Radio', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('create', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-radio v-model="radio" label="a">
         </el-radio>
@@ -22,7 +27,7 @@ describe('Radio', () => {
     });
   });
   it('disabled', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-radio
           v-model="radio"
@@ -46,7 +51,7 @@ describe('Radio', () => {
     });
   });
   it('radio group', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-radio-group v-model="radio">
           <el-radio :label="3" ref="radio1">备选项</el-radio>
@@ -70,7 +75,7 @@ describe('Radio', () => {
     });
   });
   it('radio button', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-radio-group v-model="radio">
           <el-radio-button :label="3" ref="radio1">备选项</el-radio-button>

+ 11 - 6
test/unit/specs/row.spec.js

@@ -1,14 +1,19 @@
-import { createTest } from '../util';
+import { createTest, destroyVM } from '../util';
 import Row from 'packages/row';
 
 describe('Row', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('create', () => {
-    const vm = createTest(Row, true);
+    vm = createTest(Row, true);
     let rowElm = vm.$el;
     expect(rowElm.classList.contains('el-row')).to.be.true;
   });
   it('gutter', () => {
-    const vm = createTest(Row, {
+    vm = createTest(Row, {
       gutter: 20
     }, true);
     let rowElm = vm.$el;
@@ -16,21 +21,21 @@ describe('Row', () => {
     expect(rowElm.style.marginRight).to.be.equal('-10px');
   });
   it('type', () => {
-    const vm = createTest(Row, {
+    vm = createTest(Row, {
       type: 'flex'
     }, true);
     let rowElm = vm.$el;
     expect(rowElm.classList.contains('el-row--flex')).to.be.true;
   });
   it('justify', () => {
-    const vm = createTest(Row, {
+    vm = createTest(Row, {
       justify: 'end'
     }, true);
     let rowElm = vm.$el;
     expect(rowElm.classList.contains('is-justify-end')).to.be.true;
   });
   it('align', () => {
-    const vm = createTest(Row, {
+    vm = createTest(Row, {
       align: 'bottom'
     }, true);
     let rowElm = vm.$el;

+ 13 - 8
test/unit/specs/steps.spec.js

@@ -1,9 +1,14 @@
-import { createVue } from '../util';
+import { createVue, destroyVM } from '../util';
 import Vue from 'vue';
 
 describe('Steps', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('create', () => {
-    const vm = createVue(`
+    vm = createVue(`
       <el-steps>
         <el-step title="step1"></el-step>
         <el-step title="step2"></el-step>
@@ -15,7 +20,7 @@ describe('Steps', () => {
   });
 
   it('space', done => {
-    const vm = createVue(`
+    vm = createVue(`
       <el-steps>
         <el-step title="step1"></el-step>
         <el-step title="step2"></el-step>
@@ -41,7 +46,7 @@ describe('Steps', () => {
   });
 
   it('processStatus', done => {
-    const vm = createVue(`
+    vm = createVue(`
       <el-steps :active="1" process-status="error">
         <el-step title="step1"></el-step>
         <el-step title="step2"></el-step>
@@ -56,7 +61,7 @@ describe('Steps', () => {
   });
 
   it('finishStatus', done => {
-    const vm = createVue(`
+    vm = createVue(`
       <el-steps :active="1" finish-status="error">
         <el-step title="abc"></el-step>
         <el-step title="abc2"></el-step>
@@ -70,7 +75,7 @@ describe('Steps', () => {
   });
 
   it('active', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-steps :active="active" finish-status="error">
           <el-step title="abc"></el-step>
@@ -94,7 +99,7 @@ describe('Steps', () => {
   });
 
   it('create vertical', () => {
-    const vm = createVue(`
+    vm = createVue(`
       <el-steps direction="vertical">
         <el-step title="aaa"></el-step>
         <el-step title="bbb"></el-step>
@@ -105,7 +110,7 @@ describe('Steps', () => {
   });
 
   it('vertical:height', done => {
-    const vm = createVue(`
+    vm = createVue(`
       <el-steps direction="vertical" :space="200">
         <el-step title="aaa"></el-step>
         <el-step title="bbb"></el-step>

+ 12 - 7
test/unit/specs/tabs.spec.js

@@ -1,8 +1,13 @@
-import { createVue } from '../util';
+import { createVue, destroyVM } from '../util';
 
 describe('Tabs', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('create', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-tabs>
           <el-tab-pane label="用户管理">A</el-tab-pane>
@@ -27,7 +32,7 @@ describe('Tabs', () => {
     }, 100);
   });
   it('active-name', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-tabs :active-name="activeName" @click="handleClick">
           <el-tab-pane name="tab-A" label="用户管理">A</el-tab-pane>
@@ -63,7 +68,7 @@ describe('Tabs', () => {
     }, 100);
   });
   it('card', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-tabs type="card">
           <el-tab-pane label="用户管理">A</el-tab-pane>
@@ -77,7 +82,7 @@ describe('Tabs', () => {
     expect(vm.$el.classList.contains('el-tabs--card')).to.be.true;
   });
   it('border card', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-tabs type="border-card">
           <el-tab-pane label="用户管理">A</el-tab-pane>
@@ -91,7 +96,7 @@ describe('Tabs', () => {
     expect(vm.$el.classList.contains('el-tabs--border-card')).to.be.true;
   });
   it('closable', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-tabs type="card" closable @tab-remove="handleRemove">
           <el-tab-pane label="用户管理">A</el-tab-pane>
@@ -127,7 +132,7 @@ describe('Tabs', () => {
     }, 100);
   });
   it('closable edge', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-tabs type="card" closable>
           <el-tab-pane label="用户管理">A</el-tab-pane>

+ 12 - 7
test/unit/specs/tag.spec.js

@@ -1,8 +1,13 @@
-import { createVue } from '../util';
+import { createVue, destroyVM } from '../util';
 
 describe('Tag', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('create', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
       <el-tag></el-tag>
       `
@@ -14,7 +19,7 @@ describe('Tag', () => {
   });
 
   it('text', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
       <el-tag>标签</el-tag>
       `
@@ -23,7 +28,7 @@ describe('Tag', () => {
   });
 
   it('type', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
       <el-tag type="primary"></el-tag>
       `
@@ -32,7 +37,7 @@ describe('Tag', () => {
   });
 
   it('hit', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
       <el-tag hit></el-tag>
       `
@@ -41,7 +46,7 @@ describe('Tag', () => {
   });
 
   it('closable', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
       <el-tag closable @close="handleClose">关闭标签</el-tag>
       `,
@@ -66,7 +71,7 @@ describe('Tag', () => {
   });
 
   it('closeTransition', () => {
-    const vm = createVue({
+    vm = createVue({
       template: `
       <el-tag closable closeTransition></el-tag>
       `

+ 14 - 9
test/unit/specs/time-picker.spec.js

@@ -3,8 +3,13 @@ import TimePicker from 'packages/time-picker';
 import Vue from 'vue';
 
 describe('TimePicker', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('create', () => {
-    const vm = createTest(TimePicker, {
+    vm = createTest(TimePicker, {
       placeholder: 'test',
       readonly: true
     });
@@ -14,7 +19,7 @@ describe('TimePicker', () => {
   });
 
   it('format', () => {
-    const vm = createTest(TimePicker, {
+    vm = createTest(TimePicker, {
       format: 'HH-mm-ss',
       value: new Date(2016, 9, 10, 18, 40)
     });
@@ -23,7 +28,7 @@ describe('TimePicker', () => {
   });
 
   it('default value', done => {
-    const vm = createTest(TimePicker, {
+    vm = createTest(TimePicker, {
       value: new Date(2016, 9, 10, 18, 40)
     }, true);
 
@@ -45,7 +50,7 @@ describe('TimePicker', () => {
   });
 
   it('select time', done => {
-    const vm = createTest(TimePicker, true);
+    vm = createTest(TimePicker, true);
     const input = vm.$el.querySelector('input');
 
     input.blur();
@@ -80,7 +85,7 @@ describe('TimePicker', () => {
   });
 
   it('click cancel button', done => {
-    const vm = createTest(TimePicker, true);
+    vm = createTest(TimePicker, true);
     const input = vm.$el.querySelector('input');
 
     input.blur();
@@ -97,7 +102,7 @@ describe('TimePicker', () => {
   });
 
   it('click confirm button', done => {
-    const vm = createTest(TimePicker, true);
+    vm = createTest(TimePicker, true);
     const input = vm.$el.querySelector('input');
 
     input.blur();
@@ -114,7 +119,7 @@ describe('TimePicker', () => {
   });
 
   it('set format', done => {
-    const vm = createTest(TimePicker, {
+    vm = createTest(TimePicker, {
       pickerOptions: {
         format: 'HH:mm'
       }
@@ -131,7 +136,7 @@ describe('TimePicker', () => {
   });
 
   it('set format to empty', done => {
-    const vm = createTest(TimePicker, {
+    vm = createTest(TimePicker, {
       pickerOptions: {
         format: ''
       }
@@ -148,7 +153,7 @@ describe('TimePicker', () => {
   });
 
   it('selectableRange', done => {
-    const vm = createTest(TimePicker, {
+    vm = createTest(TimePicker, {
       pickerOptions: {
         selectableRange: '18:30:00 - 20:30:00'
       }

+ 10 - 5
test/unit/specs/time-select.spec.js

@@ -3,8 +3,13 @@ import TimeSelect from 'packages/time-select';
 import Vue from 'vue';
 
 describe('TimeSelect', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('should render correct contents', done => {
-    const vm = createTest(TimeSelect, {
+    vm = createTest(TimeSelect, {
       pickerOptions: {
         start: '08:30',
         step: '00:15',
@@ -28,7 +33,7 @@ describe('TimeSelect', () => {
   });
 
   it('select time', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <div>
           <el-time-select ref="compo" v-model="value">
@@ -62,7 +67,7 @@ describe('TimeSelect', () => {
   });
 
   it('set default value', done => {
-    const vm = createTest(TimeSelect, {
+    vm = createTest(TimeSelect, {
       value: '14:30'
     }, true);
     const input = vm.$el.querySelector('input');
@@ -80,7 +85,7 @@ describe('TimeSelect', () => {
   });
 
   it('set minTime', done => {
-    const vm = createVue(`
+    vm = createVue(`
       <el-time-select
         ref="picker"
         :picker-options="{
@@ -105,7 +110,7 @@ describe('TimeSelect', () => {
   });
 
   it('minTime < value', done => {
-    const vm = createVue({
+    vm = createVue({
       template: `
         <el-time-select
           ref="picker"

+ 8 - 3
test/unit/specs/tooltip.spec.js

@@ -1,8 +1,13 @@
-import { createVue, triggerEvent } from '../util';
+import { createVue, triggerEvent, destroyVM } from '../util';
 
 describe('Tooltip', () => {
+  let vm;
+  afterEach(() => {
+    destroyVM(vm);
+  });
+
   it('create', () => {
-    const vm = createVue(`
+    vm = createVue(`
       <el-tooltip content="提示文字">
         <button>click</button>
       </el-tooltip>`);
@@ -66,7 +71,7 @@ describe('Tooltip', () => {
   });
 
   it('light mode', () => {
-    const vm = createVue(`
+    vm = createVue(`
       <el-tooltip content="abc" effect="light">
         <button>abc</button>
       </el-tooltip>